Тож німий нетерплячий використав наступний скрипт на моєму сервері 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
не створюється каталог!