क्या मैंने केवल -exec mv के साथ सब कुछ हटा दिया था?


26

मैंने अपने दम पर यह पता लगाने की कोशिश की। यहाँ मैं टर्मिनल में इस्तेमाल किया कमांड है:

find . -name "*.jpg" -exec mv {} pictures \;

मैंने पहले चित्र नाम की निर्देशिका नहीं बनाई थी। क्या हुआ था एक फाइल जिसका नाम Pictures.gif था। क्या यह फ़ाइलें मिल गई तो उन्हें अधिलेखित कर दिया क्योंकि यह उन्हें स्थानांतरित कर दिया था?

यह चित्र क्या है। इस फ़ाइल को इस कमांड के परिणामस्वरूप बनाया गया है?

क्या फ़ाइलें अभी भी संभवतः कहीं ड्राइव पर हैं?


खेद है कि आपके साथ हुआ और मुझे उम्मीद है कि आप सामान वापस पा सकते हैं। .Gif द्वारा खोजा गया - यह जानना दिलचस्प होगा कि वहां क्या हुआ था।
सेजस्ट्रॉम

7
यदि आप एक निर्देशिका का नाम लिख रहे हैं, तो /इसे संलग्न करें! हमेशा! तब यह केवल एक निर्देशिका हो सकती है।
लाइटनेस रेस मोनिका के साथ

2
जैसे शीर्ष उत्तर कहता है: अब उस ड्राइव का उपयोग करना बंद करें, और हटाए गए .jpg फ़ाइलों को पुनर्प्राप्त करने का प्रयास करें। हालांकि, इसके लिए, मैं खुले-स्रोत और क्रॉस-प्लेटफ़ॉर्म PhotoRec की सिफारिश करूंगा , जो कई छवि प्रारूपों (Jpg, लेकिन अलग-अलग कच्ची फ़ाइलों आदि) को जानता है और बहुत गहन है।
ओलिवियर दुलक

जवाबों:


45

पहला: अब इस ड्राइव का उपयोग बंद करें । यह केवल पढ़ने के लिए दूर करने के लिए ठीक है, बस यह सुनिश्चित करें कि कोई और लेखन न करें। हां, आपने तस्वीरें हटा दी हैं। वे पुनर्प्राप्त करने योग्य हो सकते हैं, लेकिन जितना अधिक आप उस ड्राइव का उपयोग करते रहेंगे, आपके पास कुछ भी पुनर्प्राप्त करने का मौका कम होगा।

आपका आदेश चलता है mv pic1.jpg pictures, mv pic2.jpg picturesआदि। प्रत्येक mvफाइल को वर्तमान picturesमें किसी अन्य चित्र द्वारा नाम दिया गया ओवरवॉट है ।

एक फ़ाइल (एक ही फाइल सिस्टम के भीतर) ले जाने का मतलब है कि इसे उस निर्देशिका से अलग करना जिसमें यह शामिल है और इसे नए नाम के तहत लक्ष्य निर्देशिका में संलग्न करना है। इसलिए इस कमांड द्वारा कोई फ़ाइल डेटा संशोधित या डिलीट नहीं किया गया था, केवल जो इमेज गायब हो गई हैं उनके लिए डायरेक्टरी एंट्रीज।

आप एक टूल चला सकते हैं जो आपके फाइलसिस्टम के खाली स्थान को बिखेरता है और उन चीज़ों की तलाश करता है जो जेपेग की तरह दिखती हैं। सौभाग्य से, प्रत्येक jpeg फ़ाइल एक पहचानने योग्य हेडर के साथ शुरू होती है। हटाए गए सामग्री को देखने वाले उपकरण नक्काशी उपकरण कहलाते हैं । कुछ सहित उबंटू में कर रहे हैं, recoverjpeg , सबसे पहले , TestDisk , ... तस्वीरों को एक अलग घर विभाजन पर या एक बाहरी ड्राइव पर हैं, तो एक स्थापित करने या उन संकुल की अधिक से नष्ट कर दिया चित्रों के साथ विभाजन करने के लिए उन्हें इशारा करते हैं।

यदि फ़ोटो आपके सिस्टम डिस्क पर हैं, तो आपको तुरंत अपने सिस्टम का उपयोग बंद करने की आवश्यकता है। लाइव सीडी या यूएसबी डाउनलोड करने के लिए दूसरे कंप्यूटर का उपयोग करें और उसी से बूट करें। किसी भी लाइव सीडी जिसमें टेस्टडिस्क शामिल है, बिल को फिट करना चाहिए, लेकिन कुछ अन्य की तुलना में उपयोग करना आसान है। सिस्टम रेस्क्यू सीडी एक अच्छा सामान्य-उद्देश्य प्रणाली बचाव सीडी है। उबंटू रेस्क्यू रीमिक्स एक उबंटू उपयोगकर्ता के लिए अधिक परिचित हो सकता है।


भविष्य के संदर्भ के लिए, mv -iजब तक आप फ़ाइलों को अधिलेखित करने का लक्ष्य न रखें, तब तक उपयोग करने की आदत डालें। आपके पास पहले से ही एक उपनाम हो सकता है mv, लेकिन यह केवल तब होता है जब आप mvसीधे कमांड लाइन पर टाइप करते हैं, न कि जब mvकिसी स्क्रिप्ट या findकमांड द्वारा आमंत्रित किया जाता है ।

$ : >pictures
$ mv -i foo.jpg pictures
mv: overwrite `pictures'?

इसके अलावा, यदि आप /एक नाम के बाद एक निर्देशिका का नाम माना जाता है, तो आपको एक त्रुटि मिलेगी यदि निर्देशिका मौजूद नहीं है, या यदि उस नाम से एक फ़ाइल है जो निर्देशिका नहीं है।

$ : >pictures
$ mv foo.jpg pictures/
mv: cannot move `foo.jpg' to `pictures/': Not a directory
$ rm pictures
$ mv foo.jpg pictures/
mv: cannot move `foo.jpg' to `pictures/': Not a directory

के नुकसान से बचने के लिए find, आप इसके बजाय bash के पुनरावर्ती निर्देशिका ट्रैवर्सल सुविधा का उपयोग कर सकते हैं। आपको इसे पहले कमांड के साथ चालू करना होगा shopt -s globstar(आप इस लाइन को अपने साथ जोड़ सकते हैं ~/.bashrc। फिर:

mv **/*.jpg pictures/

(ध्यान दें कि बैश में, **/निर्देशिकाओं के प्रतीकात्मक लिंक का पता लगाता है, और इसे बंद करने का कोई तरीका नहीं है। यदि आप एक पुनरावर्ती ट्रैवर्सल चाहते हैं, जो निर्देशिकाओं के प्रतीकात्मक लिंक के माध्यम से नहीं दिखता है, तो zsh का उपयोग करें या खोजें।)


1
क्या आपने उदाहरणों के दूसरे सेट के /बाद इसे छोड़ दिया pictures? यानी, यह mv foo.jpg pictures/( /दोनों) mvकमांड में नहीं होना चाहिए ?
धान लांडौ

@PaddyLandau वास्तव में, यह एक बहुत खराब कॉपी-पेस्ट या संपादन विफलता थी। रिपोर्ट के लिए धन्यवाद।
गिल्स एसओ- बुराई का होना बंद करें

13

मुझे डर है कि आपने अपनी सभी तस्वीरों को उस एकल फ़ाइल में खो दिया है। फोरेंसिक जैसे फोरेंसिक टूल का उपयोग करके कुछ फ़ाइलों को पुनर्प्राप्त करना संभव है , लेकिन सफलता की दर मीडिया (डिस्क) का उपयोग करने में अधिक समय तक गिरती है। (सटीक होने के लिए, विभाजन लंबा है ।)

अगली बार, जब आप एक निर्देशिका का मतलब करते हैं, तो उसमें एक स्लैश जोड़ें और -iएक फ़ाइल पहले से मौजूद होने की स्थिति में पुष्टि के लिए पूछने का विकल्प जोड़ें :

find -name "*.jpg" -exec mv -i {} pictures/ {} \;

6
हाँ, मुझे फिर से जोर देना होगा: एक लाइव सीडी पर्यावरण में प्रवेश करें! यदि आप इन फ़ाइलों को वापस चाहते हैं, तो आपको अब ड्राइव का उपयोग बंद करना होगा। और अगर आपको एक छवि को डाउनलोड करने और जलाने की आवश्यकता है, तो इसे दूसरे कंप्यूटर से करें। इस डिस्क पर जितनी कम गतिविधि होती है, उतने बेहतर अवसर आपकी तस्वीरों को पुनर्स्थापित करने में सक्षम होते हैं।
ओली

इसके लिए धन्यवाद। मैंने आपका उत्तर पहले देखा और तुरंत मशीन पर प्लग खींचा और अपने मल्टीबूट यूएसबी बचाव डिस्क के साथ रिबूट किया।
jtnewhou
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.