メインディレクトリ内のファイルをサブディレクトリ内の少量のファイルに整理する方法

メインディレクトリ内のファイルをサブディレクトリ内の少量のファイルに整理する方法

150 個のファイルを含むディレクトリがあり、それを 25 個のファイルごとにサブディレクトリに分割し、1 ~ 25 を dir1 に、26 ~ 50 を dir2 にというように分割したいと考えています。これを実現するにはどうすればよいでしょうか。

dir1/fre_4_g2_c3654214.h3

dir1/fre_4_g2_c0585433.h3

dir1/fre_4_g2_c3565415.h3

... 等々

そして私がやりたいのは

dir1/fre_4_g2_c3654214.h3

dir2/fre_4_g2_c0585433.h3

dir3/fre_4_g2_c3565415.h3

答え1

これにより、ファイルは英数字順に並べ替えられ、最初の 25 個のファイルがサブディレクトリ に移動されdir0、次の 25 個のファイルが に移動されるdir1というように、すべてのファイルが移動されるまで処理されます。

 n=0; for f in *; do d="dir$((n++ / 25))"; mkdir -p "$d"; mv -- "$f" "$d/$f"; done

コマンドを複数行に分散することを好む人向け:

n=0
for f in *
do
    d="dir$((n++ / 25))"
    mkdir -p "$d"
    mv -- "$f" "$d/$f"
done

kshこれは、 またはのどちらでも機能しますbash

関連情報