हां, rm *.xvg
केवल .xvg
आपकी वर्तमान निर्देशिका में समाप्त होने वाली फ़ाइलों को हटा देगा । यहाँ पर क्यों।
जब आप इस तरह का कमांड टाइप करते हैं, तो आपके द्वारा उपयोग किए जा रहे शेल (लेट्स बैश) और कमांड बाइनरी के बीच काम विभाजित हो जाता है।
आप टाइप करके बाइनरी का पता लगा सकते हैं which rm
। यह छोटा सा प्रोग्राम अनलिंकिंग फाइलों का ध्यान रखता है। इस तरह के कार्यक्रम कमांड लाइन से शुरू किए जा सकते हैं और prog arg1 arg2 arg3
जब वे शुरू होते हैं तो तर्कों की एक सूची पढ़ सकते हैं । के मामले में rm
, उन्हें हटाए जाने के लिए पूरी तरह से योग्य फ़ाइलनाम की सूची के रूप में व्याख्या की जाती है। इसलिए यदि आप फ़ाइल युक्त निर्देशिका में हैं foo.bar
, तो टाइपिंग delete 'foo.*'
में परिणाम होगा rm: foo.*: No such file or directory
। फ़ाइल पैटर्न के आसपास सिंगल कोट्स पर ध्यान दें, वे शेल को तर्क को पास करने के लिए बताते हैं जैसा कि यह है।
हालाँकि अगर आप टाइप करते हैं rm *.bar
उसी निर्देशिका में , तो यह फ़ाइल को हटा देगा। यहाँ क्या हो रहा है कि आपका शेल, जो प्रोग्राम है जिसे आप कमांड्स में टाइप करने के लिए उपयोग कर रहे हैं, कमांड पर आर्ग्युमेंट्स पास करने से पहले कुछ ट्रांसफॉर्मेशन कर रहा है। इनमें से एक को 'फ़ाइल नाम विस्तार' कहा जाता है, अन्यथा 'ग्लोबिंग' के रूप में जाना जाता है। आप यहाँ bash फ़ाइल नाम विस्तार की एक सूची देख सकते हैं । सबसे आम विस्तार में से एक है *
, जिसे मौजूदा निर्देशिका में फ़ाइलनाम तक विस्तारित किया गया है।
ग्लब्स को काम पर देखने का एक सरल तरीका उपयोग करना है echo
, जो शेल के माध्यम से पारित सभी तर्कों को वापस प्रिंट करता है। तो echo *
उसी डायरेक्टरी में टाइप करने से आउटपुट मिलेगाfoo.bar
। इसलिए जब आप टाइप करते हैं rm *.bar
, तो वास्तव में क्या हो रहा है कि शेल तर्क सूची को विस्तारित करता है foo.bar
, फिर उस rm
कमांड को पास करता है ।
ग्लोबिंग को नियंत्रित करने के कुछ तरीके हैं। उदाहरण के लिए, हाल के संस्करणों में, आप ग्लोबस्टार नामक एक विकल्प को चालू कर सकते हैं जो पुनरावर्ती विस्तार करेगा। टाइपिंग सभी सबफ़ोल्डर्स में echo **/*.bar
समाप्त होने वाली सभी फ़ाइलों की एक सूची दिखाएगी .bar
। तो rm **/*.bar
ग्लोबस्टार सक्षम बैश में टाइप करने से सबफ़ोल्डर में सभी मिलान फ़ाइलों को वास्तव में पुन: प्राप्त हो जाएगा।
rm -f {*.xvg,.*.xvg}
छिपी हुई फ़ाइलों को भी हटाने के लिए। औरrm -R -f {*.xvg,.*.xvg}
डायरेक्ट्रीज को भी हटाना है।