जादू यूनिक्स, निर्देशिका के एक पेड़ से सभी .pyc फ़ाइलों को हटा दें?


11

वहाँ निर्देशिका के पेड़ से सभी .pyc फ़ाइलों को हटाने का एक त्वरित तरीका है?

जवाबों:


28

यदि आपको GNU मिल गया है तो आप शायद चाहते हैं

find <directory name> -name '*.pyc' -delete

अगर आपको कुछ पोर्टेबल की जरूरत है तो आप बेहतर हैं

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

अगर गति एक बड़ी बात है और आपको GNU मिल गया है और GNU xargs मिल गया है

find <directory name> -name '*.pyc' -print0|xargs -0 -p <some number greater than 1> rm

यह आपको अधिक गति देने की संभावना नहीं है, हालांकि, इस तथ्य के कारण कि आप ज्यादातर I / O पर प्रतीक्षा करेंगे।


बहुत बहुत धन्यवाद। यह xargs मैं हमेशा भूल जाता हूं
interstar

2
बस अगर मेरे पास नामों में रिक्त स्थान वाली फाइलें हैं, तो मुझे हमेशा -0 का उपयोग करने की आदत और "xargs -0" में मिल गया है।
पॉल टॉम्बलिन

आप पूरी तरह से सही हैं, इसे मूल रूप से सोचना चाहिए।
सियान

4
तुम भी सीधे 'का उपयोग कर सकते हैं -प्रतिष्ठा' के बजाय '-print0 | xargs -0 rm ’। लेकिन यह सच है कि यह विकल्प 'खोज' के सभी संस्करण में मौजूद नहीं है।
रोलाफ

6

कमांड खोजने का उपयोग करना:

find /path/to/start -name '*.pyc' -exec rm -f {} \;

यह बहुत धीमी है। Xargs का उपयोग करना तेज़ है, या यदि आपके खोज का संस्करण इसका समर्थन करता है, तो " \;" अंत में एक " +" में बदलें ।
अगली सूचना तक रोक दिया गया।

1
यह थोड़ा धीमा हो सकता है - यह उन्हें बैच करने के बजाय प्रत्येक फ़ाइल के लिए एक बार "आरएम" चलाता है - लेकिन यह इसे करने का सबसे पोर्टेबल तरीका है। ओपी ने यह नहीं कहा कि वह किस तरह के यूनिक्स का उपयोग कर रहा था, और सोलारिस को अभी भी पता नहीं है कि -प्रिंट0 सुविधा नहीं है।
केन्‍स्टर

1
+1, ओपी ने कहा कि यूनिक्स लिनक्स नहीं है, यह सबसे अच्छा पोर्टेबल समाधान है।
Theotherreceive

मुझे लगता है कि यह समाधान टन की फ़ाइलों को हटाने के लिए एकमात्र अनुमति है, अगर मैं गलत नहीं हूं तो xargs कमांड लाइन लंबी त्रुटि में छोड़ सकता है। +1, यह वर्षों से मेरी पसंद है।
drAlberT

यदि आप अपनी परियोजना के निर्माण के लिए एक मेकफाइल का उपयोग कर रहे हैं, तो आप इसे "साफ" लक्ष्य में जोड़ना चाह सकते हैं।
टॉम न्यूटन

1

निर्देशिका के पेड़ की शुरुआत के लिए सीडी फिर:

खोजो। -नाम '* .pyc' | xargs rm -f


यह आवश्यक नहीं है cd, बस शीर्ष निर्देशिका को findकमांड में रखा जाए ("डॉट" के स्थान पर)।
अगली सूचना तक रोक दिया गया।

यह बिल्कुल भी रिक्त स्थान नहीं संभालता है।
सियान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.