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
。