जवाबों:
सुरक्षित कंप्यूटिंग का अभ्यास करें। बस पदानुक्रम में एक स्तर ऊपर जाएं और वाइल्डकार्ड अभिव्यक्ति का उपयोग न करें:
cd ..; rm -rf -- <dir-to-remove>
दो डैश --
बताते हैं rm
कि <dir-to-remove>
यह कमांड-लाइन विकल्प नहीं है, तब भी जब यह डैश से शुरू होता है।
rm ./
हैं तो आप गलती से टाइप rm . /
कर सकते हैं जो आपदा हो सकती है।
वर्तमान के नीचे सभी फ़ाइलों / निर्देशिकाओं को हटा देगा।
find -mindepth 1 -delete
यदि आप किसी अन्य निर्देशिका के साथ भी ऐसा करना चाहते हैं जिसका नाम आपके पास है, तो आप बस उसका नाम रख सकते हैं
find <name-of-directory> -mindepth 1 -delete
यदि आप न केवल उप-निर्देशिका और फ़ाइलों को निकालना चाहते हैं, बल्कि निर्देशिका को भी छोड़ देते हैं, तो छोड़ दें -mindepth 1
। इसे हटाएं बिना उन -delete
चीजों की एक सूची प्राप्त करें।
-mindepth 1
यदि आपको किसी निर्देशिका ( find <name-of-directory> -mindepth 1 -delete
) को निर्दिष्ट करने की आवश्यकता है । अन्यथा जोहानिस सही है कि यह वर्तमान कार्य निर्देशिका (उपयोग करते समय find -delete
) को हटा नहीं देगा ।
find -mindepth 1 -delete
लेकिन मुझे मिल गया illegal option -- m
लेकिन यह बहुत अच्छा काम किया जब मैंने माइंडप्थ ऑप्शन को हटा दिया find . -delete
मैं हमेशा जो करता हूं वह टाइप है
rm -rf *
और फिर ESC- * मारा , और बैश वर्तमान कार्य निर्देशिका में फ़ाइलों और निर्देशिकाओं की एक स्पष्ट सूची के लिए * का विस्तार होगा।
लाभ हैं:
वास्तव में, मुझे यह इतना पसंद है कि मैंने इसे .bashrc में इस लाइन के साथ TAB के लिए डिफ़ॉल्ट व्यवहार बना दिया है।
bind TAB:insert-completions
--
इस जवाब में गुम ? यह दृष्टिकोण कमाल है कुल मिलाकर मुझे कहना होगा।
उपयोग
rm -rf *
अद्यतन: .
वर्तमान निर्देशिका के लिए खड़ा है, लेकिन हम इसका उपयोग नहीं कर सकते। आदेश के लिए स्पष्ट जांच के लिए लगता है .
और ..
। इसके बजाय वाइल्डकार्ड ग्लोबिंग का उपयोग करें। लेकिन यह जोखिम भरा हो सकता है।
एक सुरक्षित संस्करण IMO का उपयोग करना है:
rm -ri *
(यह आपको हर फ़ाइल / निर्देशिका को हटाने से पहले पुष्टि के लिए संकेत देता है।)
यह सही है कि rm –rf .
किसी भी उपनिर्देशिका और उनकी सामग्री सहित वर्तमान में सब कुछ हटा देगा। एकल डॉट ( .
) वर्तमान निर्देशिका का मतलब है। सावधान करने के लिए नहीं किया जा rm -rf ..
के बाद से डबल डॉट ( ..
) पिछले निर्देशिका का मतलब है।
यह कहा जा रहा है, यदि आप मेरे जैसे हैं और एक ही समय में कई टर्मिनल विंडो खुली हैं, तो आप बेहतर सुरक्षित रहेंगे और rm -ir .
यह समझने के लिए कमांड के तर्कों पर नज़र डालते हैं।
सबसे पहले, यदि आप rm
कमांड मैन पेज ( man rm
अधिकांश यूनिक्स के तहत) देखते हैं, तो –r
इसका मतलब है कि "निर्देशिका की सामग्री को पुनरावर्ती रूप से हटा दें"। इसलिए, rm -r .
अकेले करने से मौजूदा डायरेक्टरी में सब कुछ डिलीट हो जाएगा और सब कुछ बॉप हो जाएगा।
में rm –rf .
जोड़ा -f का अर्थ है "अस्तित्वहीन फ़ाइलों की अनदेखी, कभी नहीं शीघ्र"। वह आदेश वर्तमान निर्देशिका में सभी फ़ाइलों और निर्देशिकाओं को हटा देता है और आपको कभी भी पुष्टि करने के लिए संकेत नहीं देता है कि आप वास्तव में ऐसा करना चाहते हैं। -f
विशेष रूप से खतरनाक है यदि आप एक विशेषाधिकार प्राप्त उपयोगकर्ता के तहत कमांड चलाते हैं क्योंकि आप किसी भी निर्देशिका की सामग्री को हटाने का मौका पा सकते हैं बिना यह सुनिश्चित करने के लिए कि वास्तव में आप क्या चाहते हैं।
Otherhand पर, में है कि की जगह का अर्थ है "किसी भी हटाने से पहले शीघ्र"। इसका मतलब है कि आपको "ऑप्स" कहने का मौका मिलेगा! आरएम जाने से पहले खुशी से अपनी सभी फाइलें हटा दें।rm -ri .
-i
-f
अपने शुरुआती सीसादमिन दिनों में मैंने rm -rf /
एक सिस्टम पर किया, जबकि पूरे विशेषाधिकारों (रूट) के साथ लॉग ऑन किया। परिणाम दो दिन बीत गया था बैकअप से सिस्टम को पुनर्स्थापित करना। इसलिए मैं अब नौकरी करता हूं rm -ri
।
सुनिश्चित करें कि आप सही निर्देशिका में हैं
rm -rf *
मेरा मानना है कि यह उत्तर बेहतर है:
/unix/12593/how-to-remove-all-the-files-in-a-directory
यदि आपकी शीर्ष-स्तरीय निर्देशिका को कहा जाता है
images
, तो चलाएंrm -r images/*
। यह प्रत्येक फ़ाइल या निर्देशिका में छवियों के भीतर*
चलाने के लिए शेल ग्लोब ऑपरेटर का उपयोग करता हैrm -r
।
मूल रूप से आप एक स्तर ऊपर जाते हैं, और फिर कहते हैं कि एक्स निर्देशिका के अंदर सब कुछ हटा दें। इस तरह से आप अभी भी निर्दिष्ट कर रहे हैं कि किस फ़ोल्डर में उसकी सामग्री हटाई जानी चाहिए, जो मूल फ़ोल्डर को संरक्षित करते समय, 'यहां सब कुछ हटाएं' कहने से अधिक सुरक्षित है, (जो कभी-कभी आप चाहते हैं क्योंकि आपको अनुमति नहीं है या बस नहीं चाहते हैं फ़ोल्डर की मौजूदा अनुमतियों को संशोधित करने के लिए)