मैं एक निर्देशिका में सब कुछ कैसे हटाऊं?


25

मैं एक निर्देशिका में सब कुछ कैसे हटा सकता हूं, जिसमें छिपी हुई फाइलें और निर्देशिकाएं शामिल हैं?

अभी, मैं निम्नलिखित का उपयोग करता हूं:

rm -rf *
rm -rf .*

5
आप उन्हें जोड़ सकते हैं rm -rf .* *
उपयोगकर्ता अज्ञात

2
आप एक निर्देशिका ऊपर जा सकते हैं और फिर चला सकते हैंrm -rf yourdirectory/*
श्रेयांसप

1
क्षमा करें, छिपी निर्देशिका भाग छूट गया। पिछले यूजर्स सॉल्यूशन को कवर करते हैं
shreyansp

आपके द्वारा पोस्ट किया गया वह दूसरा विकल्प बहुत खतरनाक है। यह ..निर्देशिका से मेल खाएगा , जो ऊपर की निर्देशिका में है, जो भी हटा देगा ।
रिचर्ड पीटरसन

जवाबों:


17

सरल और सीधे आगे:

find -delete 

निर्देशिका और छिपी हुई फ़ाइलें शामिल हैं। कम से कम गन्नू-पता है -delete, आपका findअलग हो सकता है।


1
निर्देशिका को हटाने से बचने के लिए, उपयोग करें find /path -delete -mindepth 1
orodbhen

@orodbhen: find -delete डायरेक्टरी को डिलीट नहीं करेगा, जहां आप कमांड लॉन्च करते हैं (जैसा कि rm के साथ प्रश्न में है)।
उपयोगकर्ता अज्ञात

11

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


7
तो यह कैसे अधिक आसान है। 'सावधान रहें' कोई जवाब नहीं है। मुझे समझ नहीं आता कि कोई व्यक्ति किसी निर्देशिका को क्यों हटाता है और इसे फिर से लिखता है।
उपयोगकर्ता अज्ञात

मैंने वाक्यांश "एक खाली निर्देशिका के रूप में" जोड़ा, शायद यह अधिक स्पष्ट है।
क्रिस कुएन्ले जूल

2
नहीं, यह स्पष्ट नहीं करता है कि आप किसी निर्देशिका को क्यों हटाते हैं और उसे फिर से बनाते हैं। विचार करने के लिए चीजों के लिए, btw।, तिथि / निर्माण का समय भी।
उपयोगकर्ता अज्ञात

2
यदि वह निर्देशिका किसी प्रक्रिया की वर्तमान कार्यशील निर्देशिका है, तो आप समस्याओं में भाग सकते हैं। इसके अलावा, यदि आप निर्देशिका को हटाते हैं, तो आप इसकी अनुमतियों और स्वामित्व के बारे में जानकारी निकालते हैं।

8
rm -rf -- * .[!.]* ..?*

तीन पैटर्न में से प्रत्येक अपने आप में विस्तार करता है यदि यह कुछ भी नहीं से मेल खाता है, लेकिन यह यहां कोई समस्या नहीं है क्योंकि हम सब कुछ मैच करना चाहते हैं और बिना rm -fकिसी तर्क के नजरअंदाज कर दिया है।

ध्यान दें कि .*मिलान होगा..


5

मान लें कि बैश 4+:

shopt -s dotglob
rm -rf -- *
##or:
rm -rf ./*

डॉटग्लोब सक्षम होने के साथ, *सभी फ़ाइलों और निर्देशिकाओं तक फैलता है, यहां तक ​​कि उन के साथ शुरू होता है .- लेकिन इसका विस्तार नहीं करता है .और .., इसलिए इसका उपयोग करना सुरक्षित है rm



2

ओह माई ज़श

rm -rf (.|)*

फिर, यह केवल Zsh के लिए है।


2
या *(D)( Dग्लोब क्वालिफायर glob_dotsइस पैटर्न के लिए विकल्प को चालू करता है )।
गाइल्स का SO- बुराई पर रोक

या rm -rf {.,}*(बैश के विपरीत, zsh शामिल नहीं है .और ..में {.,}*, कम से कम मेरी मशीन पर)।
साशा

1

कैसे उपयोग करने के बारे find। मुझे लगता है कि यह आम तौर पर एक अच्छा विकल्प है, जब आपको उप-निर्देशिकाओं के माध्यम से खुदाई करनी होगी।

find . -type f -exec rm {} \;

1
वहाँ एक स्विच स्विच है, तो आप निर्देशिकाओं को हटा सकते हैं। (कम से कम गन्नू-में)।
उपयोगकर्ता अनजान

यह उपनिर्देशिका को नहीं हटाएगा
साशा

-2

कोशिश करो rm -rf *?*। यह सामान्य और छिपी हुई फ़ाइलों को हटा देगा।


4
किसी ऐसे शेल में नहीं जिसे मैं जानता हूं।
गिल्स एसओ- बुराई को रोकना '

तुम सही हो। यह उप-निर्देशिकाओं को नहीं हटाता है।
हैप्पीदिम

4
समस्या यह होने की अधिक संभावना है कि *?*"डॉट" फाइलों / डायरियों से मेल नहीं खाएगा (जब तक कि आपने बैशdotglob में विकल्प को सक्षम नहीं किया है , zsh में विकल्प , या जो भी शेल आप उपयोग कर रहे हैं उसके बराबर)। GLOB_DOTS
क्रिस जॉन्सन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.