私のディレクトリには約100,000個のファイルがあります。想像できるように、これは理想的な状況ではなく、ディレクトリをサブディレクトリに分割したいと思います。ただし、ファイル名のために名前やその他の項目に基づいてサブディレクトリに入れることができないため、10個のディレクトリを作成し、各ディレクトリに約1000個のファイルを入れようとします。これを実行できる単純なbashコマンドまたはループはありますか?
ベストアンサー1
努力する:
n=0; for f in *; do d="subdir$((n++ / 1000))"; mkdir -p "$d"; mv -- "$f" "$d/$f"; done
n
移動されたファイルの数を追跡します。何千ものバッチで、各ファイルは名前付きサブディレクトリに割り当てられますsubdir$((n++ / 1000))
。 (必要に応じて命名を調整できます。)mkdir -p "$d"
まだ作成されていない場合は、このサブディレクトリを作成します。 mv -- "$f" "$d/$f"
ファイルをこのサブディレクトリに転送します。