
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
。