Самый безопасный способ, который я знаю, это:
cd
"где находятся ваши каталоги" tar
, чтобы сохранить их где-нибудь:tar -cvf
"имя файла для сохранения, например, /tmp/mysavfil.tar" "имя всех каталогов, например, :foo bar и т. д.", чтобы получить:tar -cvf /tmp/mysavfil.tar foo bar
cd..
tar xvf /tmp/mysavfil.tar
cd
"исходное место, где были ваши файлы"; rm -rf foo bar
;rm /tmp/mysavefiltar
Гораздо проще сделать:
mv foo bar../.
Даже если мне не нравятся такого рода вопросы, когда очевидно, что вы просто немного не искали, прежде чем задать вопрос, вот начало решения:
for file in * ; do
dstdir=$(stat -c %X "${file}")
if [ ! -d "${dstdir}" ]; then
mkdir "${dstdir}"
fi
mv "${file}" "${dstdir}"
done
ОТРЕДАКТИРОВАНО С ПОЛНОСТЬЮ ИЗМЕНЕННЫМ ИСХОДНЫМ ВОПРОСОМ
i=0
dstdir=0
for file in *; do
if [[ "$((i++))" -gt 10 ]] ; then
dstdir=$((dstdir + 1))
fi
if [ ! -d "${dstdir}" ] ; then
mkdir ${dstdir}
fi
mv $file ${dstdir}/
done
Базовый алгоритм. Настройте тест i
под свои нужды. Напоминаем, что $(( ))
— выполнять арифметические действия в bash (не уверен, что он совместим с sh)