В родительском каталоге folderA
запустите следующий скрипт:
#!/bin/bash
i=0 # counter for current file
j=0 # counter for current directory
batchsize=1000 # size of each batch
find folderA -type f -print0 | while read -r -d $'\0' file
do
if (( i % batchsize == 0 ))
then
(( j++ ))
mkdir "dir_$j"
fi
mv -- "$file" "dir_$j"
(( i++ ))
done
Если все файлы в folderA
имеют «нормальные» имена, то есть без пробелов, без символов глобуса и т. Д.,Сценарий может быть записан как
#!/bin/bash
find folderA -maxdepth 2 -type f | xargs -n 1000 | while read files
do
mkdir dir_$((++i))
mv $files dir_$i/
done
Что является более коротким, а также гораздо более производительным.