Настолько глупо, что я использовал следующий сценарий на моем сервере 19.04 в попытке переместить несколько видеофайлов в папки с префиксами:
dirs=(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z)
shopt -s nocasematch
for file in *
do
for dir in "${dirs[@]}"
do
if [ -d "$file" ]; then
echo 'this is a dir, skipping'
break
else
if [[ $file =~ ^[$dir] ]]; then
echo "----> $file moves into -> $dir <----"
mv "$file" "$dir"
break
fi
fi
done
done
Понятия не имею, где это пошло не так, но вместо того, чтобы перемещать файлы в папки, они пошли в единый вывод ..
----> a1.ts moves into -> A <----
----> a2.ts moves into -> A <----
----> a3.ts moves into -> A <----
----> a4.ts moves into -> A <----
----> a5.ts moves into -> A <----
----> c1.ts moves into -> C <----
----> c2.ts moves into -> C <----
----> c3.ts moves into -> C <----
----> c4.ts moves into -> C <----
----> c5.ts moves into -> C <----
К счастью, я остановил процесс (CTRL + C), как только заметил, что он идет не так, как задумано, и не прошел всю папку.
Так что теперь у меня есть эти файлы Aи C, которые меньше, чем Гб, и, судя по всему, это одно видео.
В общем объеме использования самой папки на диске не хватает 50 ГБ, но общее дисковое пространство компьютера осталось прежним. Заставить меня думать, что файлы не удалены?
Любая помощь приветствуется, спасибо :)
Редактировать: файлы фактически исчезли, остается только последний записываемый файл, все, что потребовалось, - это некоторое время, чтобы обновить информацию об использовании диска. Мораль истории, запускайте свои сценарии на фиктивных файлах раньше!
mv "$file" "$dir/", с трейлингом /; тогда, если $dirне существует, mvпроизойдет ошибка вместо переименования $fileв $dir. Также рассмотрим mv -iи mv -n. И всегда делайте mkdir -pперед переездом, для хорошей меры.
A,Bи так далее существовали перед запуском сценария? Если нет, вы просто переименовали файлы. Все файлы, имена которых начинаются сaилиAбыли переименованыA, поэтому сохранился только последний переименованный файл, остальные перезаписываются. Для вызова переменнойdirне создается каталог!