निकटतम मैं मिल गया है
# rm /path/to/directory/*.*
लेकिन यह उन फ़ाइलों के लिए काम नहीं करता जिनके पास एक्सटेंशन नहीं है ...
निकटतम मैं मिल गया है
# rm /path/to/directory/*.*
लेकिन यह उन फ़ाइलों के लिए काम नहीं करता जिनके पास एक्सटेंशन नहीं है ...
जवाबों:
लिनक्स एक्सटेंशन का उपयोग नहीं करता है। यह फ़ाइल के निर्माता पर निर्भर है कि वह यह तय करना चाहता है कि क्या उसका नाम एक्सटेंशन है। लिनक्स पहली बाइट को देखने के लिए यह पता लगाता है कि वह किस प्रकार की फ़ाइल के साथ काम कर रही है।
निर्देशिका उपयोग में सब कुछ हटाने के लिए:
rm /path/to/directory/*
आप -r
विकल्प का उपयोग कर सकते हैं , उदाहरण के लिए:
rm -r /path/to/directory/*
उस निर्देशिका के अंदर किसी भी उप निर्देशिका (उनकी सभी सामग्री के साथ) को निकालने के लिए जिसे आप हटा रहे हैं। अन्यथा यह आपको यह सूचित करने में त्रुटि दिखाएगा कि यह निर्देशिका को हटा नहीं रहा है।
all files
;) का *.*
अर्थ है सभी फाइलें जिनका .
नाम कहीं है
*a*
शून्य या अधिक वर्णों का अर्थ है, उसके a
बाद शून्य या अधिक वर्ण। यह फ़ाइल नाम से मेल खाएंगे happy
, apple
, a
या la
।
इसकी सभी सामग्रियों के साथ फ़ोल्डर को हटाने के लिए ( सभी आंतरिक फ़ोल्डर सहित ):
rm -rf /path/to/directory
फ़ोल्डर की सभी सामग्री को हटाने के लिए ( सभी आंतरिक फ़ोल्डर सहित ), लेकिन फ़ोल्डर ही नहीं:
rm -rf /path/to/directory/*
या
rm -rf /path/to/directory/{*,.*}
यदि आप यह सुनिश्चित करना चाहते हैं कि छिपी हुई फाइलें / निर्देशिकाएं भी हटा दी जाएं।
एक फ़ोल्डर के अंदर से सभी "फाइल" को हटाने के लिए ( आंतरिक फ़ोल्डरों को नहीं हटाना ):
rm -f /path/to/directory/{*,.*}
चेतावनी : यदि आपके रास्ते में जगह है, तो हमेशा उद्धरणों का उपयोग करना सुनिश्चित करें।
rm -rf /path/to the/directory/*
2 अलग rm -rf
कॉल के बराबर है :
rm -rf /path/to
rm -rf the/directory/*
इस समस्या से बचने के लिए, आप '
सिंगल-कोट्स '
( शेल वेरिएबल्स का विस्तार नहीं करता है ) या "
डबल-कोट्स "
( शेल वेरिएबल का विस्तार ) का उपयोग कर सकते हैं :
rm -rf "/path/to the/directory/"*
कहाँ पे:
rm
- " हटाने " के लिए खड़ा है-f
- " बल " के लिए खड़ा है, जो तब मददगार होता है जब आप किसी संग्रह को हटाना चाहते हैं, उदाहरण के लिए पूछा जाना चाहिए / संकेत नहीं किया जाना चाहिए।-r
- " पुनरावर्ती " के लिए खड़ा है, जिसका अर्थ है कि आप हर फ़ोल्डर को पुनरावर्ती रूप से नीचे जाना चाहते हैं और सब कुछ हटा दें।rm -rf /path/to/directory/*
फ़ोल्डर में छिपी हुई फ़ाइल को नहीं हटाता है उदा .htaccess
। हो सकता है rm -rf /path/to/directory/.
? यह कोशिश नहीं की है।
rm -rf /path/to/directory/.*
केवल निर्दिष्ट निर्देशिका में छिपी हुई फ़ाइल को हटाता है। @ रंजविंड के उत्तर पर @ danjjl की टिप्पणी को देखते हुए, छिपी हुई फ़ाइलों को हटाने के लिए, चलाने shopt -s dotglob
से पहले चलाएं rm -rf /path/to/directory/*
।
rm -rf /path/to/directory/.*
पर अपने सिस्टम में आइटम का विलोपन के कारण होता है /path/to
। सौभाग्य से, मैंने अपना संपूर्ण डेटा एक अलग डिस्क पर बैकअप कर दिया था। कहने की जरूरत नहीं है, rm -rf /path/to/directory/.*
जब तक आप अपने पूरे कंप्यूटर को एक अलग / सुरक्षित स्थान पर बैकअप न लें, तब तक आदेश जारी न करें!
निर्देशिका में सभी फ़ाइलों को हटाने के लिए (छुपी हुई फ़ाइलें और उपनिर्देशिका सहित) चलाएँ:
rm -rf /path/to/directory/{*,.*}
./
और ../
, लेकिन यह अभी भी छिपी हुई फ़ाइलों को हटा देगा।
rm -r $(pwd)/{*,.*}
यदि आप केवल पथ / पथ / / निर्देशिका में फ़ाइलें हटाना चाहते हैं, तो आप कर सकते हैं
find /path/to/directory -type f -print0| xargs -0 rm
या
find /path/to/directory -type f -exec rm '{}' \;
आप के साथ लोड कर सकते हैं find
, लाभ यह है कि आप सूचीबद्ध rm
कर सकते हैं जो इसे पाइपिंग के बिना पाया जाता है ताकि आप देख सकें कि आपके शुरू होने से पहले क्या हटा दिया जाएगा।
GNU find
एक -delete
विधेय के रूप में । आप अभी भी उपयोग करना चाहते हैं -exec
, प्रतिस्थापन \;
के साथ +
इकट्ठा करेगा rm
कॉल एक साथ, बढ़ती दक्षता।
निर्देशिका में सभी फ़ाइलों और निर्देशिकाओं ( छिपे हुए लोगों सहित ) को हटाने के लिए , आप निम्नलिखित प्रयास कर सकते हैं:
फ़ोल्डर को हटाएं, फिर इसे फिर से बनाएँ
rm -rf dir_name && mkdir dir_name
उपयोग find
find dir_name -mindepth 1 -delete
यहां हम -mindepth 1
निर्देशिका dir_name को स्वयं निर्दिष्ट करना निर्दिष्ट करते हैं।
निम्नलिखित लिंक पर एक नज़र डालें:
https://unix.stackexchange.com/questions/12593/how-to-remove-all-the-files-in-a-directory
यदि आप भी सभी उपनिर्देशिका और निर्देशिका को स्वयं निकालना चाहते हैं, तो आप उपयोग कर सकते हैं rm -rf /path/to/directory
। लेकिन हमेशा रिटर्न को दबाने से पहले अपनी लाइन को डबल-चेक करें, rm -rf
बहुत सारे हॉक का कारण बन सकता है, जैसे कि अगर आपने गलती से सुपरसिर की अनुमति होने के बाद पहली स्लैश के बाद एक स्थान डाला है ...
चूँकि यह प्रश्न Google के शीर्ष पर है, जब मैं स्वयं इसे खोजता हूँ:
अन्य उत्तर विभिन्न समस्याओं से ग्रस्त हैं:
उनमें से कुछ शामिल हैं .
और ..
जो शोर, भ्रमित और कष्टप्रद है।
उनमें से कुछ छिपी हुई फाइलें (डॉट के साथ शुरू होने वाली फाइलें) भूल जाते हैं।
वे निर्देशिका हटाने की अनुमति देने के लिए एक सही (सबसे गहरा-पहला) क्रम में नहीं हटाते हैं।
वे अन्य (घुड़सवार) फ़ाइल सिस्टम में उतरते हैं, जो अक्सर अवांछित होता है।
वे अतिरिक्त मापदंडों के साथ ठीक से विस्तार करना मुश्किल हैं (उस पर अधिक)।
find "${DIR}" -xdev -mindepth 1 -printf "%d\t%y\t%p\0" | sort -z -r -n | cut -z -f3- | xargs -0 -r -- rm -d --
ध्यान दें कि मैंने -xdev
आरोह (जैसे /proc
आदि) में उतरने से रोकने के लिए एक तर्क जोड़ा ।
-depth
या नहीं -delete
?इसके बावजूद लोग लगातार मुझे इसके लिए मना कर रहे हैं, उन तरीकों में एक नकारात्मक पहलू है: ऐसा लगता नहीं है कि वे पर्याप्त रूप से -prune
एक उपनिर्देशिका (और अधिक समस्याओं को पेश किए बिना) को अनुमति देने के लिए पर्याप्त नहीं हैं । इस विधि के विपरीत, आप सम्मिलित कर सकते हैं
-not \( -path "${DIR}/subdir" -prune \)
अपनी सामग्री को हटाने से हटाने के -mindepth
तर्क से पहले subdir
।
-depth
ध्वज find
है।
-delete
साथfind
उपयोग ? -delete
गहराई है-पहली। आप पहले से ही गैर POSIX संभालने रहे हैं find
के साथ -printf
है, तो आप बस के रूप में अच्छी तरह से उपयोग कर सकते हैं -delete
या-depth -print0 | xargs -0 rm
-not \( -path "$DIR/subdir" \)
... लेकिन मेरा है? क्यों?
आप cd
डायरेक्टरी में जा सकते हैं और फिर rm *.*
डीओएस की तरह ही कमांड चला सकते हैं अगर आपको याद है।
shopt -s dotglob
से पहले छुपी हुई फाइलों को हटाना चाहते हैंrm (...)