
У меня есть каталог из 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
.