История изменений
Исправление vodz, (текущая версия) :
Нуууу не знаю, почему это у вас должно работать быстрее.
Вот вам для произвольного количества, чтобы не ошибиться в знаках у printf:
#!/bin/bash
MAX_FILE_IN_DIR=25
files=(largedir/*)
nfiles=${#files[@]}
make_dir_and_move() {
printf -v DIR "%0${#nfiles}d" $((++DIRN))
mkdir $DIR
mv "${out[@]}" $DIR
out=()
}
for i in ${!files[@]} ; do
[[ ${#out[@]} -eq $MAX_FILE_IN_DIR ]] && make_dir_and_move
out+=("${files[i]}")
done
[[ ${#out[@]} -ne 0 ]] && make_dir_and_move
Исправление vodz, :
Нуууу не знаю, почему это у вас должно работать быстрее.
Вот вам для произвольного количества, чтобы не ошибиться в знаках у printf:
#!/bin/bash
MAX_FILE_IN_DIR=25
files=(largedir/*)
nfiles=${#files[@]}
make_dir_and_move() {
printf -v DIR "%0${#nfiles}d" $((++DIRN))
mkdir $DIR
mv "${out[@]}" $DIR
out=()
}
for i in ${!files[@]} ; do
[[ ${#out[@]} -eq $MAX_FILE_IN_DIR ]] && make_dir_and_move
out+=("${files[i]}")
done
[[ ${#out[@]} -ne 0 ]] && make_dir_and_move
Исходная версия vodz, :
Нуууу не знаю, почему это у вас должно работать быстрее.
Вот вам для произвольного количества, чтобы не ошибиться в знаках у printf:
#!/bin/bash
MAX_FILE_IN_DIR=25
files=(largedir/*)
nfiles=${#files[@]}
make_dir_and_move() {
printf -v DIR "%0${#nfiles}d" $((++DIRN))
mkdir $DIR
mv "${out[@]}" $DIR
}
for i in ${!files[@]} ; do
if ((${#out[@]}==MAX_FILE_IN_DIR)) ; then
make_dir_and_move
out=()
fi
out+=("${files[i]}")
done
[[ ${#out[@]} -ne 0 ]] && make_dir_and_move