2012-07-02 23 views
5

मैं एक विशिष्ट निर्देशिका से फ़ाइलों को रिकर्सली से हटाना चाहता हूं। तो, मैं'find -delete' और 'rm -rf' के बीच अंतर?

find . -wholename "*.txt" -delete 
का इस्तेमाल किया है

हम भी

rm -rf *.txt 

का उपयोग कर rm और find का उपयोग कर फ़ाइल का विलोपन बीच क्या अंतर है फ़ाइलें हटा सकते हैं ??

+3

) उन फ़ाइलों पर जिन्हें आप हटा रहे हैं। – Wernsey

उत्तर

5

find . -wholename abd.txt -delete कि .

rm -rf abd.txt प्रयासों की निर्देशिका वृक्ष abd.txt दूर करने के लिए में कहीं हैं abd.txt नामित सभी फाइलों को दूर करने के लिए प्रयास करता है, और अगर यह एक निर्देशिका, सभी फ़ाइलें और पूरे वृक्ष में निर्देशिका है।

+0

ठीक है। फिर 'find -delete' और 'rm -rf' का उपयोग करके हटाने के बीच क्या अंतर है? –

+1

'ढूंढें ... 'का उपयोग करके आप उपनिर्देशिका को स्कैन करते हैं, जबकि' आरएम 'का उपयोग करते समय आप केवल * मौजूदा * निर्देशिका में मौजूद फ़ाइलों को स्कैन करते हैं, उपनिर्देशिका में नहीं। –

+0

@MisterJack: '-r' के साथ, 'rm' उपनिर्देशिका को भी हटा देता है। – reinierpost

3

find -wholename GLOBPATTERN वर्तमान निर्देशिका नीचे हर फ़ाइल (गहराई से स्वतंत्र) मैच के लिए कोशिश करता है, ग्लोब आप rm कमांड के साथ प्रयोग किया जाता है केवल फाइलों जो सीधे वर्तमान निर्देशिका के तहत (गहराई 1) कर रहे हैं के खिलाफ मिलान किया जाता है।

बीटीडब्ल्यू। आप rm को -r स्विच की जरूरत नहीं है जब तक आप रिकर्सिवली एक निर्देशिका (क्योंकि .txt विस्तार की, मुझे लगता है कि आप केवल नियमित रूप से फ़ाइल को हटाना चाहते)

1

find-delete के साथ प्रयोग किया हटाना चाहते हैं, फ़ाइलों को पाता है और उन्हें हटा देता है । Find कमांड फ़ाइलों को देखने के लिए पथ में ले जाता है और फिर -delete ध्वज उस दिए गए पथ में मिली फ़ाइलों को हटा देता है। तो, आप कह सकते हैं खोजने के लिए एक चयनात्मक हटाने

के और अधिक जबकि rm -rf आदेश फ़ाइलें/निर्देशिका को हटाता है रिकर्सिवली कोई बात नहीं क्या है। इसका मतलब है rmसभी विशिष्ट पथ पर फ़ाइलों और निर्देशिकाओं को हटा देगा। -r रिकर्सन के लिए खड़ा है और -f बल हटा है। तो, rm-rf के साथ युग्मित निर्देशिकाओं और फ़ाइलों को निर्देशिका पथ के भीतर लक्ष्य पथ पर तब तक हटाएगा जब तक कि यह और नहीं मिलता।

`find` आप जिसके बारे में आप को दूर फ़ाइलें अधिक विशिष्ट मिलता है, लेकिन दोनों` बुला अनलिंक() `अंत [आदमी पेज] (http://linux.die.net/man/2/unlink साथ