आपने अपने होम डायरेक्टरी के सभी (लगभग) डिलीट कर दिए हैं!
rm -r something
कुछ के तहत / फ़ाइलों और निर्देशिकाओं को पुन: हटा देता है ; यह केवल उन वस्तुओं पर विफल होगा जिनके पास हटाने की अनुमति नहीं है, या तो क्योंकि वे एक अलग उपयोगकर्ता (जैसे root
) के स्वामित्व में हैं , या क्योंकि वे उपयोग में हैं (उदाहरण के लिए जीवीएफएस माउंट)।
यदि आपने -f
(जैसा कि rm -rf something
) नहीं जोड़ा , तो आपको कुछ ऐसा मिलेगा:
rm: remove write-protected regular file ‘something’?
rm: descend into write-protected directory ‘something’?
इस बिंदु पर आप गर्भपात कर सकते हैं और आपको तब पता चलता है कि आपने गलत कमांड निष्पादित किया है।
इस तरह की दुर्घटनाओं से बचने के लिए समुदाय से सुझाव
नोट: सामुदायिक विकी, हर कोई योगदान देने के लिए स्वतंत्र महसूस करता है।
कुछ फ़ाइलों के लिए, -i
फ़ाइलों या निर्देशिकाओं को हटाने पर पुष्टि पाने के लिए विकल्प का उपयोग करें :
$ rm -ri something/
rm: remove regular file ‘something/file~’? y
rm: descend into directory ‘something’? y
rm: remove regular file ‘something/file’? y
rm: remove directory ‘something’? y
यदि एक वर्तमान निर्देशिका से निकाल रहे हैं, तो इसे ./
किसी अन्य स्थान को गलत तरीके से हटाने से बचने के लिए उपसर्ग करें ।:
$ cd something
$ rm -v ./*~
removed ‘./file~’
उपरोक्त के उपयोग के प्रदर्शन के लिए था ./
। यदि कोई उपनिर्देशिका है, तो आप निश्चित rm -v something/*~
रूप से उपयोग कर सकते हैं । खबरदार : ऐसा मत सोचो कि rm ./.*
वर्तमान निर्देशिका में सभी छिपी हुई फ़ाइलों को हटा देता है। छिपी हुई फ़ाइलों पर वर्कअराउंड के लिए इस सर्वरफॉल्ट प्रश्न को देखें ।
डिलीट करने के बजाय मूव करें: फाइलों को डिलीट करने के बजाय पहली बार मैं उन फाइलों को मूव करने के लिए इस्तेमाल करता हूं जिन्हें मैं अंत में डिलीट करने से पहले कहीं और से छुटकारा चाहता हूं। अगर कुछ गलत हो गया तो उसे बहाल करना आसान है।
mv -b SOURCE DEST
यदि आप चयनित फ़ाइलों को पुन: प्राप्त करना चाहते हैं, तो पूर्वावलोकन के लिए find
(संभवतः के साथ grep
) का उपयोग करें । आपको इसे एक दुर्लभ घटना बनाने की कोशिश करनी चाहिए, लेकिन अगर आपको ...
find
बिना किसी तर्क के पुनरावर्ती सभी फाइलों / निर्देशिकाओं को वर्तमान के अंतर्गत सूचीबद्ध करता है। आपको यह देखने का प्रयास करना चाहिए man find
कि इसे कैसे चयनात्मक (ट्रेजर ट्राव) बनाया जाए, लेकिन अगर आप परेशान नहीं करना चाहते हैं, तो आप केवल grep
उन फ़ाइलों के लिए परिचित का उपयोग कर सकते हैं जिन्हें आप हटाना चाहते हैं।
- मान लीजिए मैं एक uber-l33t कर्नेल हैकर हूं, और अपने स्रोत पेड़ में "उदाहरण" फ़ाइलों के कुछ KB से परेशान हूं; मैं नाम वाली सभी फ़ाइलों को हटाना चाहता हूं। इसलिए मैं टाइप करता हूं
find | grep example
, जो मुझे ये 20 फाइलें देता है । यह अच्छा लग रहा है, इसलिए मैं अब उन सटीक फ़ाइलों को हटाता हूं, साथ ही rm -v
पहले बताई गई क्रिया के आउटपुट के साथ xargs
:
खोजो | grep उदाहरण | xargs rm -v
जो मुझे यह आउटपुट देता है । इस तरह की पूर्वावलोकन समस्याओं को कहती है कि आप कहां टाइप sample
करते हैं और इसके बजाय टाइप करते हैं example
।
उपरोक्त समाधान का उपयोग नहीं किया जाना चाहिए, यदि आपके पास रिक्त स्थान, टैब वर्ण, newlines, या उद्धरण ( "
या '
) वाले फ़ाइलनाम हो सकते हैं , क्योंकि यह xargs
या तो विफल हो जाएगा, या rm
अधूरा फ़ाइल नाम के साथ फ़ीड करेगा , जो सबसे खराब स्थिति में गलत को दूर कर सकता है। फ़ाइलें। उपरोक्त कार्य करने का सुरक्षित तरीका यह है कि यह सभी find
ऑपरेटरों और कार्यों के साथ करें।
निम्नलिखित उन सभी फाइलों को दिखाएगा जिनमें शब्द हैं example
find . -name "*example*"
यदि वह सूची वह फ़ाइलें है जिसे आप निकालना चाहते हैं, -exec
तो फ़ाइलों को पास करने के लिए क्रिया का उपयोग करें rm
।
find . -name "*example*" -exec rm -v {} +
उपयोग करने के साथ अधिक सहायता के लिए खोज का उपयोग करना देखें find
।