Saya baru saja kehilangan sebagian kecil dari koleksi audio saya, karena kesalahan bodoh yang saya buat. :-(
SANGAT SAYA punya cadangan yang cukup baru, tapi itu masih menjengkelkan. Terlepas dari Anda benar-benar, penyebab lain melakukan kejahatan itu mv
, yang akan ditampilkan sebagai berikut:
File audio memiliki skema tertentu:
ARTIST - Some Title YY.mp3
di mana YY
spesifikasi tahun 2 digit.
mkdir 90<invisible control character>
(Sampai saat ini, saya tidak tahu bahwa saya benar-benar mengetik sepertiga karakter berlebih yang tidak terlihat ...!)
Daripada memiliki semuanya dalam satu direktori, saya ingin memiliki semua musik tahun 1990-an dalam satu direktori. Jadi saya mengetik:
find . -name '* 9?.mp3' -exec mv {} 90 \;
Tidak terlalu sulit untuk mengetahui apa yang terjadi, eh? : ->
Hasil (bencana) adalah direktori kosong perawan yang disebut '90 something '(dengan sesuatu menjadi karakter kontrol "tidak terlihat") dan satu file tunggal yang disebut' 90 ', ditimpa sebanyak n kali.
SEMUA FILE TELAH PERGI. : - (((jelas))
Wish mv
akan sudah memeriksa dalam waktu apakah tanda tangan "file" tujuan (ingat pada * NIX: Everything Is A File ) dimulai dengan d------
(misalnya drwxr-xr-x
). Dan, tentu saja, apakah tujuan itu ada atau tidak . Ada varian dari skenario tersebut, ketika Anda hanya lupa untuk mkdir
direktori yang pertama. (tapi tentu saja, Anda berasumsi bahwa itu ada di sana ...)
Bahkan kami OS hewan peliharaan-kebencian dimulai dengan modal W APAKAH DO INI. Anda bahkan diminta untuk menentukan jenis tujuan (file? Direktori?) Jika Anda memintanya.
Oleh karena itu, saya bertanya-tanya apakah kita * NIXers masih harus menulis sendiri " mv
scriptlet" hanya untuk menghindari kejutan yang tidak diinginkan semacam ini.
mv
bukan masalah di sini, secara teknis, tidak tahu bahwa Anda memindahkan serangkaian file. Anda menjalankan mv
satu kali untuk setiap file. Begitulah cara find -exec ;
kerjanya. Jika Anda menggunakan find -exec +
(seperti dalam beberapa komentar) mv
akan menjerit begitu mendapat lebih dari satu argumen.
mv
untuk setiap file tunggal mungkin tampak sedikit kurang dipikirkan pada awalnya, itu akan (seperti yang saya katakan sebelumnya) menjadi satu-satunya solusi waras setelah file sumber tersebar di berbagai subdirektori. Bahwa dalam case-test saya, file-file source semuanya dalam satu direktori tidak berarti itu adalah case test saya yang sebenarnya . Ini sebenarnya hanya penyederhanaan, karena saya dapat dengan mudah menjelaskannya sendiri nanti. Plus, itu membuat pertanyaan kurang memakan waktu untuk membaca karena panjangnya berkurang. :)
mv
mengharuskan destinasi itu ada? mv oldfile newfile
adalah cara untuk mengubah nama file, dan konyol untuk berharap newfile
sudah ada dan menjadi direktori.
.mp3
harus ada di sana dengan nama90
, itu bisa menjadi salah satu yang Anda tidak punya cadangan.