मैंने सिर्फ अपने ऑडियो संग्रह का एक छोटा सा हिस्सा खो दिया है, एक बेवकूफ गलती से। :-(
खुशी से मेरे पास हाल ही में बैकअप था, लेकिन यह अभी भी परेशान था। आपके अलावा वास्तव में, शरारत करने वाले दूसरे अपराधी थे mv, जो निम्नानुसार दिखाएंगे:
ऑडियो फाइलों में एक निश्चित योजना थी:
ARTIST - Some Title YY.mp3
YY2-अंकीय वर्ष विनिर्देश कहां है।
mkdir 90<invisible control character>
(इस क्षण तक, मुझे नहीं पता था कि मैंने वास्तव में एक तिहाई अतिरिक्त चरित्र टाइप किया था जो अदृश्य था ...!)
एक निर्देशिका में सभी होने के बजाय, मैं चाहता था कि एक निर्देशिका में सभी 1990 के दशक का संगीत हो। इसलिए मैंने टाइप किया:
find . -name '* 9?.mp3' -exec mv {} 90 \;
ऐसा मुश्किल नहीं है कि विचार प्राप्त करने के लिए क्या हुआ? : ->
(विनाशकारी) परिणाम एक कुंवारी थी खाली निर्देशिका '90 बुलाया कुछ '(के साथ कुछ "अदृश्य" नियंत्रण चरित्र जा रहा है) और एक एकल फाइल तथाकथित' 90 ', ओवरराइट n बार।
सभी फ़ाइलें चला गया। :-(( (जाहिर है)
विश mvकिया है जाएगा जाँच की : समय क्या गंतव्य "फाइल" के हस्ताक्षर (* NIX पर याद में सब कुछ एक फ़ाइल के साथ एक शुरू होता है) d------(जैसे drwxr-xr-x)। और, ज़ाहिर है, चाहे गंतव्य बिल्कुल मौजूद हो। पूर्वोक्त परिदृश्य का एक प्रकार है, जब आप पहले निर्देशिका को भूल जाते हैं mkdir। (लेकिन निश्चित रूप से, आपने मान लिया कि यह वहां है ...)
यहां तक कि हमारे पालतू जानवरों से नफरत करने वाला ओएस राजधानी डब्ल्यू के साथ शुरू होता है । यदि आप इसके लिए पूछें तो आपको गंतव्य का प्रकार (फ़ाइल? निर्देशिका?) निर्दिष्ट करने के लिए भी संकेत मिलता है।
इसलिए, मुझे आश्चर्य है कि अगर हम * NIXers को अभी भी खुद को एक " mvस्क्रिप्टलेट" लिखना है, तो इन प्रकार के सबसे अवांछित आश्चर्य से बचने के लिए।
mvयहाँ समस्या नहीं है, तकनीकी रूप से, यह नहीं जानता कि आप फ़ाइलों की एक श्रृंखला चला रहे हैं। आप mvप्रत्येक फ़ाइल के लिए एक बार चल रहे हैं । इसी तरह find -exec ;काम करता है। यदि आपने find -exec +(कुछ टिप्पणियों में) प्रयोग किया mv होता तो एक से अधिक तर्क मिलते ही चिल्ला उठते।
mvहर एक फाइल के लिए दौड़ना पहली बार में थोड़ा कम सोचा जा सकता है, यह (जैसा कि मैंने पहले कहा था) केवल एकमात्र समाधान हो सकता है एक बार स्रोत फ़ाइल विभिन्न उपनिर्देशिकाओं के बीच बिखरे हुए हैं। मेरे परीक्षण के मामले में, स्रोत फ़ाइलें सभी एक निर्देशिका में थीं इसका मतलब यह नहीं है कि यह मेरा वास्तविक परीक्षण मामला है। यह वास्तव में सिर्फ एक सरलीकरण है, क्योंकि मैं बाद में अपने बारे में आसानी से बता सकता हूं। साथ ही, यह प्रश्नों को उनकी कम लंबाई के कारण पढ़ने में कम समय लेने वाला बनाता है। :)
mvबात की अपेक्षा क्यों करेंगे कि गंतव्य मौजूद है? mv oldfile newfileएक फ़ाइल का नाम बदलने का तरीका है, और यह newfileपहले से मौजूद होने और एक निर्देशिका होने की उम्मीद करने के लिए मूर्खतापूर्ण है ।
.mp3नाम के साथ कम से कम एक होना चाहिए90, यह एक हो सकता है जिसके लिए आपके पास बैकअप नहीं था।