2011-05-10 22 views
29

मेरे पास एक निर्देशिका में सैकड़ों निर्देशिकाएं और फ़ाइलें हैं।केवल निर्देशिकाओं को हटाने और फ़ाइलों को छूने के लिए

सबसे अच्छा तरीका केवल निर्देशिका (कोई फर्क नहीं पड़ता निर्देशिका उस में कुछ भी है या नहीं, बस उन सब को हटाते हैं) को हटाने

वर्तमान में मैं ls -1 -d */ उपयोग करते हैं, और उन्हें एक फ़ाइल में रिकॉर्ड करते हैं, और sed करना क्या है, और फिर इसे चलाओ। यह काफी लंबा रास्ता है।

find /path -d -type d 

यकीन है कि उत्पादन समझदार लग रहा है, तो बनाने के लिए:

find /path -d -type d -exec rm -rf '{}' \; 

-type d केवल निर्देशिकाओं के लिए, लग रहा है तो -d मैं केवल निर्देशिका

उत्तर

-13

एक पंक्ति में:

rm -R `ls -1 -d */` 

(backquotes)

+5

'एलएस' से आउटपुट पाइप न करें; ** विशेष रूप से ** 'आरएम-आर' नहीं। यह विफल रहता है जब पथनाम में रिक्त स्थान होते हैं। –

+1

अंतरिक्ष समस्या पर विचार नहीं किया। याद रखेंगे। –

+0

इसे y/n प्रश्नों को छोड़ने के लिए सबसे अच्छा जवाब – Asim

10

पहले, चलाने को हटाने बेहतर तरीका के लिए देख रहा हूँ माता-पिता के सामने बाल निर्देशिका डालना सुनिश्चित करता है।

+0

पहला आदेश मेरे लिए भी काम नहीं करता है। > ढूंढें। -d -type -d ढूंढें: चेतावनी: -d विकल्प बहिष्कृत है; कृपया इसके बजाय -depth का उपयोग करें, क्योंकि बाद वाला एक पॉज़िक्स-अनुरूप सुविधा है। खोजें: अमान्य तर्क-डी-टाइप – Anthony

+1

@ एंथनी आपके पास एक अतिरिक्त हाइफ़न है। यह 'find/path -d -type d' – csvan

+1

@csvan lol होना चाहिए। वाह। बस वाह। – Anthony

111

यह बहुत सरल है और मेरे लिए काम करता है:

rm -r */ 
+4

के रूप में स्वीकार नहीं किया जाना चाहिए: rm -rf */ –

+1

स्क्रिप्ट में इसका उपयोग करते समय विस्तार को ध्यान में रखें, क्योंकि तारांकन उद्धरणों में विस्तार नहीं करेगा। जैसा कि, यह ठीक काम करना चाहिए। http://unix.stackexchange.com/questions/156534/bash-script-error-with-strings-with-paths-that-have-spaces-and-wildcards –

12

find . -maxdepth 1 -mindepth 1 -type d

तो

find . -maxdepth 1 -mindepth 1 -type d -exec rm -rf '{}' \;

+1

हालांकि यह कोड प्रश्न का उत्तर दे सकता है, अतिरिक्त संदर्भ प्रदान करना _why_ और/या _how_ के संबंध में यह का उत्तर देता है, यह प्रश्न इसके दीर्घकालिक मान में काफी सुधार करेगा। कुछ स्पष्टीकरण जोड़ने के लिए कृपया अपना उत्तर संपादित करें। –

संबंधित मुद्दे

 संबंधित मुद्दे