Тож німий нетерплячий використав наступний скрипт на моєму сервері 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, які менше , ніж Гб, і, судячи з нею відео SINGLE.
У загальному використанні диска самої папки 50Gb не враховується, але загальний дисковий простір комп'ютера залишився колишнім. Змушує мене думати, що файли не видаляються?
Будь-яка допомога вдячна, дякую :)
Редагувати: файлів насправді вже немає, залишається лише останній файл, який потрібно записати, на оновлення інформації про використання диску потрібен певний час. Мораль історії, запустіть сценарії на макетних файлах раніше!
mv "$file" "$dir/", із заднім числом /; тоді, якщо $dirйого не існує, mvпомилка буде замість перейменування $fileна $dir. Також врахуйте mv -iі mv -n. І завжди робіть mkdir -pперед тим, як рухатись, для гарної міри.
A,Bі так далі існували перед запуском сценарію? Якщо ні, ви просто перейменували файли. Усі файли, імена яких починалися зaабоAбули перейменованіA, тому збереглися лише останній перейменований файл, інші перезаписуються. Для виклику змінноїdirне створюється каталог!