यदि आप उन सभी फ़ाइलों को हटाना चाहते हैं जिनके नाम एक विशेष रूप से मेल खाते हैं, तो एक वाइल्डकार्ड (ग्लोब पैटर्न) सबसे सीधा समाधान है। कुछ उदाहरण:
$ rm -f abc.log.* # Remove them all
$ rm -f abc.log.2012* # Remove all logs from 2012
$ rm -f abc.log.2012-0[123]* # Remove all files from the first quarter of 2012
नियमित अभिव्यक्ति वाइल्डकार्ड की तुलना में अधिक शक्तिशाली हैं; आप के उत्पादन में फ़ीड कर सकते हैं grep
करने के लिए rm -f
। उदाहरण के लिए, यदि फ़ाइल के कुछ नाम शुरू होते हैं "abc.log"
और कुछ के साथ "ABC.log"
, grep
आप केस-असंवेदनशील मिलान करते हैं:
$ rm -f $(ls | grep -i '^abc\.log\.')
यदि फ़ाइल नामों में से किसी में रिक्त स्थान शामिल है, तो यह समस्या पैदा करेगा। सावधान रहे।
जब मैं ऐसा करता हूं, तो मैं सबसे ls | grep ...
पहले कमांड चलाता हूं और जांचता हूं कि यह मेरे इच्छित आउटपुट का उत्पादन करता है - खासकर अगर मैं उपयोग कर रहा हूं rm -f
:
$ ls | grep -i '^abc\.log\.'
(check that the list is correct)
$ rm -f $(!!)
जहां !!
पिछले कमांड में फैलता है। या मैं rm -f
कमांड जोड़ने के लिए ऊपर-तीर या Ctrl-P टाइप कर सकता हूं और पिछली पंक्ति को संपादित कर सकता हूं ।
यह मानता है कि आप बैश शेल का उपयोग कर रहे हैं। कुछ अन्य गोले, विशेष रूप से csh और tsh और कुछ पुराने श-व्युत्पन्न गोले, $(...)
सिंटैक्स का समर्थन नहीं कर सकते हैं । आप बराबर बैकटिक सिंटैक्स का उपयोग कर सकते हैं:
$ rm -f `ls | grep -i '^abc\.log\.'`
$(...)
वाक्य रचना पढ़ने में आसान है, और अगर तुम सच में महत्वाकांक्षी रहे हैं यह नेस्टेड हो सकता है।
अंत में, यदि आप जिन फ़ाइलों को हटाना चाहते हैं, उन्हें आसानी से एक नियमित अभिव्यक्ति के साथ व्यक्त नहीं किया जा सकता है, तो एक ट्रिक जो मैं अक्सर उपयोग करता हूं वह है फ़ाइलों को अस्थायी पाठ फ़ाइल में सूचीबद्ध करना, फिर उसे संपादित करना:
$ ls > list
$ vi list # Use your favorite text editor
मैं तब list
फ़ाइल को मैन्युअल रूप से संपादित कर सकता हूं , केवल उन फ़ाइलों को छोड़कर जिन्हें मैं हटाना चाहता हूं, और फिर:
$ rm -f $(<list)
या
$ rm -f `cat list`
(फिर से, यह माना जाता है कि फ़ाइल नामों में से कोई भी मज़ेदार वर्ण नहीं है, विशेष रूप से स्थान।)
या, list
फ़ाइल संपादित करते समय , मैं rm -f
प्रत्येक पंक्ति की शुरुआत में जोड़ सकता हूँ और फिर:
$ . ./list
या
$ source ./list
फ़ाइल को संपादित करना भी जहाँ आवश्यक हो, उदाहरण के लिए उद्धरण जोड़ने का अवसर rm -f foo bar
है rm -f 'foo bar'
।