mv `ls *.abc | head -50000`./subfolder1/
Запустите эту команду 10 раз с разными именами вложенных папок.
Как вы хотите назвать 10 подпапок? Вместо того, чтобы запускать команду 10 раз, можно использовать цикл for.
ls *.abc | head -50000
-Список первых 50 000 файлов из 5 00000 файлов.abc mv <ls part>./subfolder1/
-Переместите все 50 000 перечисленных файлов в каталог с именем subfolder1 Вы можете подойти к этому с помощью простого цикла оболочки bash:
#!/bin/bash
count=0
for file in *.abc
do
dir=$(( count / 50000 ))
(( count++ ))
[ ! -d "$dir" ] && mkdir "$dir"
echo mv -- "$file" "$dir"/
done
Это жестко задает количество файлов для перемещения в каждый каталог; каталоги именуются постепенно, начиная с нуля.
В гораздо более коротком примере (перемещение только 20 файлов по 10 за раз в 2 каталога ), вывод:
mv -- 01.abc 0/
mv -- 02.abc 0/
mv -- 03.abc 0/
mv -- 04.abc 0/
mv -- 05.abc 0/
mv -- 06.abc 0/
mv -- 07.abc 0/
mv -- 08.abc 0/
mv -- 09.abc 0/
mv -- 10.abc 0/
mv -- 11.abc 1/
mv -- 12.abc 1/
mv -- 13.abc 1/
mv -- 14.abc 1/
mv -- 15.abc 1/
mv -- 16.abc 1/
mv -- 17.abc 1/
mv -- 18.abc 1/
mv -- 19.abc 1/
mv -- 20.abc 1/
Удалите echo
, если результаты кажутся вам правильными.