2016-10-27 8 views
0

私はIDとは、例えば、画像のグループに同じであるID-sequence.jpg名前を持つ複数の画像があります。- バッシュ

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

可能な重複[dirが存在しない場合にのみMKDIRするには?](http://stackoverflow.com/questions/793858/how-to-mkdir-only-if-a-dir- does not-already-exist) –

+0

ああ、ありがとう、それについて知っていたが、考えなかった。しかし、私のコードはまだファイルを移動しません。 – 3zzy

+0

スクリプトフローを出力するためのbash '-x'オプションがありますか? – Jdamian

答えて

1

あまりにも多くの仕事。

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

うわー!楽に:) – 3zzy

+0

hmm ..命名の問題: 'mv:rename /Users/myname/images_500ge2/77-52133-205.jpg /Users/myname/images_organized/77/77-52133-205.jpg:そのようなファイルやディレクトリはありません' – 3zzy

+0

これらのディレクトリ名は正しいですか? –