Sangat tidak sabar, saya menggunakan skrip berikut di server 19.04 saya dalam upaya untuk memindahkan banyak file video ke dalam folder dengan awalan:
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
Tidak ada petunjuk di mana kesalahannya, tetapi alih-alih memindahkan file ke folder, itu menjadi output tunggal.. jadi :
----> 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 <----
Untungnya saya menghentikan prosesnya (CTRL+C) segera setelah saya menyadari bahwa itu tidak berjalan sebagaimana mestinya dan tidak melewati seluruh folder.
Jadi sekarang saya punya file-file itu A
dan C
, yang berukuran kurang dari satu Gb, dan terlihat seperti video TUNGGAL.
Ada 50 Gb yang tidak diperhitungkan dalam penggunaan disk total folder itu sendiri, tetapi ruang disk keseluruhan komputer tetap sama.
Membuat saya berpikir bahwa file tidak dihapus?
Setiap bantuan dihargai, terima kasih 🙂
Edit :file-file tersebut benar-benar hilang, hanya file terakhir yang akan ditulis yang tersisa, hanya butuh beberapa waktu untuk memperbarui info penggunaan disk.. moral dari cerita, jalankan skrip Anda pada file tiruan sebelumnya !
Jawaban yang Diterima:
Saya pikir ini masalahnya:Anda seharusnya membuat direktori A, B, C … Z. Jika Anda melakukannya, mv
perintah seharusnya memindahkan file ke direktori tersebut.
Tapi jika tidak, mv
perintah memindahkan file ke file dengan nama tersebut, A, B, C ... dan saya pikir ini yang Anda lakukan.
Untuk membuat shellscript lebih aman, Anda harus membuatnya membuat direktori (jika belum ada) sebelum Anda mulai memindahkan.
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)
for dir in "${dirs[@]}"
do
mkdir -p $dir
done
Jika Anda ingin semuanya menjadi lebih aman, Anda juga dapat menggunakan mv
dengan -i
pilihan
-i, --interactive
prompt before overwrite