У меня есть каталог, которые содержат больше чем тысячу изображений. Я хочу разделить файлы в к нескольким подкаталогам, каждый содержащий 100 файлов. Как я делаю это?
следующее работало хорошо на меня. Откройте каталог в терминале, и просто скопируйте & вставьте следующий сценарий, нажмите Enter. подкаталоги будут созданы, внутри имея имена dir_001, dir_002 и так далее.
i=0;
for f in *;
do
d=dir_$(printf %03d $((i/100+1)));
mkdir -p $d;
mv "$f" $d;
let i++;
done
Это подскажет вам с количеством каталогов и префиксом подкаталога. Команда ls - это просто напоминание о том, сколько у вас файлов.
ls -1 | wc -l
read -p 'How Many Directories: ' F;
read -p 'Sub-Directories Prefix: ' S;
PARRENT=${PWD}
# cd $PARRENT
n=0
for i in *
do
if [ $((n+=1)) -gt $F ]; then
n=1
fi
todir=$PARRENT/"$S"_$n
[ -d "$todir" ] || mkdir "$todir"
mv "$i" "$todir"
done
Перемещение фиксированного количества файлов с использованием массива с диапазоном и смещением.
#!/bin/bash
shopt -s nullglob
a=(./src/*)
for ((i=0; i<${#a[@]}; i+=100)); do
printf -v b ./img_%03d $((++n))
mkdir -p $b && mv -t $b "${a[@]:$i:100}"
done