2012-06-06 18 views
8

यह पोस्ट में कई बार आया है, इसलिए मैं इसे स्टैक ओवरफ्लो पर सभी सहायक लोगों के लिए धन्यवाद के रूप में उल्लेख कर रहा हूं।कभी यूनिक्स खोल के साथ फ़ाइलों को हटाने का प्रयास करें? -delete विकल्प का उपयोग करें

क्या आप कभी यूनिक्स में कमांड लाइन/टर्मिनल से हटने का गुच्छा करना चाहते हैं? शायद आपने

find . -name '*.pyc' -exec rm {} \; 

ऐसा करने के लिए एक शानदार तरीका का उत्तर देखें।

+1

आपको इसे एक प्रश्न और उत्तर में अलग करना चाहिए। – SLaks

+0

http://blog.stackoverflow.com/2012/05/encyclopedia-stack-exchange/ – SLaks

+1

इसके अलावा, कृपया जोड़ें कि एक शुष्क रन आवश्यक है। उन चीजों को ढूंढ सकते हैं जिन्हें आप नहीं जानते थे। –

उत्तर

19

यहां डिलीट विकल्प के साथ ऐसा करने का तरीका बताया गया है!

खोजने आदेश विकल्प -delete का उपयोग करें:

find . -name '*.pyc' -delete 

बेशक, -delete बिना एक सूखी रन की कोशिश करते हैं, अगर आप आप क्या चाहते हैं नष्ट करने के लिए जा रहे हैं देखने के लिए !!! वे कंप्यूटर इतनी तेजी से दौड़ते हैं! ;-)

+1

यदि आप 'डिलीट' ध्वज के बिना सूखे रन करते हैं, तो जब आप हटाने के लिए तैयार होते हैं, * सुनिश्चित करें कि आप ध्वज को ** अंत में जोड़ दें! ** * अन्यथा, फ़िल्टर झंडे जो इसके बाद आते हैं उन्हें अनदेखा किया जा सकता है। – Michael

6

+1 पहल करने और अपने मुद्दे को हल करने के लिए +1। कुछ मामूली नोट्स:

मैं -type f ध्वज का उपयोग करने की आदत में आने की सिफारिश करता हूं जब आप फ़ाइलों को हटाना चाहते हैं। यह find को उन फ़ाइलों को प्रतिबंधित करता है जो वास्तव में फ़ाइलें हैं (यानी निर्देशिका या लिंक नहीं)। अन्यथा आप अनजाने में एक निर्देशिका को हटा सकते हैं, जो शायद नहीं है जो आप करना चाहते थे। (उस ने कहा, जब तक कि आपके पास 'something.pyc' नामक निर्देशिका नहीं है, यह आपके उदाहरण कमांड के लिए कोई समस्या नहीं होगी। यह सामान्य रूप से एक अच्छी आदत है।)

इसके अलावा, बस आपको यह बताने के लिए, अगर

find . -type f -name '*.pyc' -exec rm {} \+ 

इस संस्करण rm के रूप में यह कर सकते हैं की एक एकल invokation के रूप में कई तर्क कहते हैं, जिससे rm के लिए कॉल की कुल संख्या को कम करने: आप इसे अगर आप इस बजाय किया तेजी से चल पाएंगे -exec rm.. संस्करण का उपयोग निर्णय लेते हैं। यह xargs में डिफ़ॉल्ट व्यवहार की तरह काम करता है।

+0

'\ +' कौन जानता था? इसके लिए +1! –