2016-10-27 23 views
0

我有幾個圖片與ID-sequence.jpg名稱,其中ID是相同的一組圖像,例如:移動類似的文件名DIR - 巴什

4fd-00027-1.jpg 
4fd-00027-2.jpg 
4fd-00027-3.jpg 
6gq-00017-1.jpg 
6gq-00017-2.jpg 
6gq-00752-3.jpg 
6gq-00752-4.jpg 

...現在我需要所有這些文件移動到其自己的目錄也應該被命名爲ID。我相信我需要這樣的東西:

for FILE in *; do 
ID_REGEX="(.*(?=-))" 
if [[ $FILE =~ $ID_REGEX ]]; then 
    ID="${BASH_REMATCH[1]}" 
    echo "$ID" 
    mkdir -p "/Users/myname/images_organized/$ID" 
    $(mv "/Users/myname/images/$FILE" "/Users/myname/images_organized/$ID/$FILE") 
fi 
done 

......但它沒有做任何事情。沒有錯誤。

+0

的可能的複製[如何只MKDIR如果目錄不存在?(http://stackoverflow.com/questions/793858/how-to-mkdir-only-if-a-dir-不 - 已經存在) –

+0

啊謝謝,知道它但沒想到。但我的代碼仍然不移動文件。 – 3zzy

+0

您是否知道打印腳本流的bash'-x'選項? – Jdamian

回答

1

工作太多。

for file in * 
do 
    dir="${file%%-*}" 
    [ -d "$dir" ] || mkdir "$dir" 
    mv "$file" "$dir" 
done 
+0

哇!毫不費力。 :) – 3zzy

+0

嗯..命名問題:'mv:rename /Users/myname/images_500ge2/77-52133-205.jpg to /Users/myname/images_organized/77/77-52133-205.jpg:沒有這樣的文件或目錄' – 3zzy

+0

這些目錄名稱是否正確? –