Yaptığım aptalca bir hata yüzünden ses koleksiyonumun küçük bir bölümünü kaybettim. :-(
GLADLY Oldukça yeni bir yedeğim vardı, ama yine de rahatsız ediciydi.Senin dışında gerçekten, yaramazlık yapan diğer suçlu mv, aşağıdaki gibi görünecekti:
Ses dosyalarının belirli bir şeması vardı:
ARTIST - Some Title YY.mp3
YY2 basamaklı yıl belirtimi nerede .
mkdir 90<invisible control character>
(Şimdiye kadar, aslında görünmez olan bir üçüncü fazlalık karakter yazdığımı bilmiyordum ...!)
Hepsi bir dizinde olmak yerine, 1990'ların tüm müziklerinin tek bir dizinde olmasını istedim. Ben de şöyle yazdım:
find . -name '* 9?.mp3' -exec mv {} 90 \;
Ne olduğu hakkında fikir edinmek o kadar zor değil ha? : ->
(felaket) sonucu, '90 bir şey ' denilen boş bir dizin (bir şey "görünmez" kontrol karakteri) ve n kez yazılan '90' adlı tek bir dosyaydı .
TÜM DOSYALAR GİTMİŞTİR. : - (((açıkçası)
Keşke , hedef "dosya" imzasının (* NIX: Her şey bir dosyadır ) üzerine bir (örneğin ) ile başlayıp başlamadığını zamanında kontrolmv ederdi . Ve elbette, hedefin var olup olmadığı . Sadece yukarıda belirtilen senaryo, bir varyantı vardır unuttum için ilk dizindeki. (ama elbette, orada olduğunu varsaydınız ...)d------drwxr-xr-xmkdir
Başkent W ile başlayan evcil hayvan nefret işletim sistemimiz bile bunu yapıyor . İsterseniz , hedef türünü (dosya? Dizini?) Belirtmeniz bile istenir .
Bu nedenle, merak ediyorum * NIXers'ın mvsadece bu tür istenmeyen sürprizlerden kaçınmak için kendimize bir " scriptlet" yazmak zorunda olup olmadığımızı merak ediyorum .
mvburada sorun değil, teknik olarak, bir dizi dosyayı taşıdığınızı bilmiyor. mvHer dosya için bir kez çalıştırıyorsunuz . İşte böyle find -exec ;çalışır. Eğer kullanılmış olsaydı find -exec +(bazı yorumlar gibi) mv olur birden fazla argüman var en kısa sürede çığlık.
mvdosya için çalıştırma ilk bakışta biraz daha az düşünülmüş gibi görünse de, kaynak dosyalar çeşitli alt dizinler arasında dağıldıktan sonra (daha önce de söylediğim gibi) tek aklı başında çözüm olacaktır. Test durumumda, kaynak dosyaların hepsi tek bir dizinde olduğu, bunun gerçek test durumum olduğu anlamına gelmez . Aslında bu sadece bir basitleştirme, çünkü bunu daha sonra kendi başıma kolayca ayrıntılandırabilirim. Ayrıca, azaltılmış uzunlukları nedeniyle soruları okumak daha az zaman alır. :)
mvvarış yerinin var olmasını isteyesiniz ki? mv oldfile newfilebir dosyayı yeniden adlandırmanın yoludur ve newfilezaten var olup bir dizin olmasını beklemek saçmadır .
.mp3adıyla orada olmalı90, yedeklemeniz olmayan biri olabilir.