मेरे पास एक ही बेस फाइलनेम वाली कई फाइलें हैं। मैं सभी को हटाना चाहता हूं, लेकिन एक
foo.org #keep
foo.tex #delete
foo.fls #delete
foo.bib #delete
etc
अगर मुझे एक रखने की जरूरत नहीं थी, मुझे पता है कि मैं इस्तेमाल कर सकता हूं rm foo.*
।
टीएलडीपी^
एक मैच को नकारने के लिए प्रदर्शित करता है। परीक्षण और त्रुटि के माध्यम से, मुझे यह पता चला
rm foo.*[^org]
मुझे क्या चाहिए, लेकिन मैं वास्तव में वाक्यविन्यास को नहीं समझता।
इसके अलावा, मेरे उपयोग के मामले में कोई सीमा नहीं है, मुझे लगता है कि यह पैटर्न भी नजरअंदाज करता है foo.o
और foo.or
। यह पैटर्न कैसे काम करता है, और एक ग्लोब जो केवल अनदेखी करता है foo.org
, वह कैसा दिखता है?
Regular Expression
। आपको अपने समूह पात्रों के साथ सावधान रहना चाहिए। ब्रैकेट्स का उपयोग करके आपने एक वर्ण वर्ग निर्दिष्ट किया है जिसका अर्थ है कि आप किसी भी फाइल को हटा देंगे जिसमें अक्षरों का विस्तार था o
, r
या g
किसी भी क्रम में। समूह बनाने और वर्णों के क्रम को संरक्षित करने के लिए कोष्ठक का प्रयोग करें।
foo.*[^org]
किसी भी फ़ाइल नाम से मेल खाता है foo.
जो डॉट के बाद एक या एक से अधिक वर्णों के साथ शुरू होता है जहां अंतिम वर्ण ओ, आर या जी नहीं है। तो यह मेल खाएंगे foo.orb
, लेकिन नहीं foo.org
या foo.or
या foo.o
। ग्लेनजैकमैन का जवाब दिखाता है कि कैसे एक मैच को नकारने के लिए विस्तारित पैटर्न मिलान सुविधाओं को सक्षम किया जाए।
rm foo.*[^org]
सभी फ़ाइलों को हटा देता है जो कि अंतिम वर्ण हैo
,r
या तो , याg
तोfoo.foo
मेल नहीं खाता।