2013-07-16 9 views

答えて

25

i=0; for f in *; do d=dir_$(printf %03d $((i/100+1))); mkdir -p $d; mv "$f" $d; let i++; done

+0

は完璧に機能しました!ありがとう –

+0

多くのありがとう。変更され、他の目的のために使用されます。とても便利な。 – technology101010

2

awk one-linerがこれを実行できます。このawkコマンドを考えてみましょう。

find . -name "*.JPG" | awk '!(++cnt%100) {"mkdir sub_" ++d|getline}' 

5000画像のフォルダ内で実行します。これにより、名前がsub_1、sub_2、... sub_50の50個のフォルダが作成されます。また、これらの新しく作成されたディレクトリにファイルを移動するため

find . -type f | awk '{ 
    a[++cnt] = $0 
} 
cnt==100 { 
    subd = "sub_" ++d; 
    system("mkdir " subd); 
    for (f in a) 
     system("mv " a[f] " " subd); 
    cnt=0 
}' 
+0

[OK]を上記の編集したセクションを参照してください。 – anubhava

+0

ありがとうございますが、エラーが出ます:-name:追加の引数が必要です –

+0

はい、タイプミスで修正しました。 – anubhava

関連する問題