किसी अंक से मिलान करने के लिए मानक फ़ाइल नाम ग्लोबिंग पैटर्न है [0-9]
। यह एकल अंक से मेल खाता है:
cat file[0-9].txt
इनमें से केवल दो का चयन करने के लिए:
cat file[25].txt
9 से बड़ी संख्या के लिए, ब्रेस विस्तार उपयोगी होगा (लेकिन ग्लोबिंग पैटर्न और ब्रेस एक्सपोज़र के बीच अंतर के लिए नीचे नोट देखें):
cat file{25..60}.txt
फिर से, ब्रेस विस्तार व्यक्तिगत संख्या के लिए भी अनुमति देता है:
cat file{12,45,900,xyz}.txt
(ध्यान दें कि ऊपर के उदाहरण में, ब्रेस विस्तार में एक अंकगणितीय लूप शामिल नहीं है, लेकिन बस प्रदान किए गए तार के आधार पर नाम उत्पन्न करता है)।
में bash
, के साथ extglob
खोल विकल्प सक्षम ( shopt -s extglob
), निम्नलिखित भी काम:
cat file@(12|45|490|foo).txt
@(...)
पैटर्न शामिल में से किसी एक से मेल खाएगी |
-delimited पैटर्न।
ग्लोबिंग पैटर्न के रूप में [...]
और @(...)
ब्रेस विस्तार के बीच का अंतर यह है कि एक ब्रेस विस्तार कमांड लाइन पर उत्पन्न होता है और वर्तमान निर्देशिका में किसी भी मौजूदा नामों से मेल नहीं खा सकता है। एक फ़ाइल नाम ग्लोबिंग पैटर्न नामों से मेल खाएगा, लेकिन यदि सभी संभावित नाम मौजूद नहीं हैं, तो शेल शिकायत नहीं करेगा। यदि कोई मिलान नाम मौजूद नहीं है, तो पैटर्न अप्रतिबंधित रहेगा, जब तक कि nullglob
शेल विकल्प सेट नहीं किया जाता है, जिस स्थिति में पैटर्न हटा दिया जाता है।
उदाहरण:
touch file1
ls file[0-9]
यहां, केवल फ़ाइल प्रविष्टि file1
दिखाई जाएगी।
के साथ ls file{0..9}
, ls
नहीं खोजने के बारे में शिकायत करेंगे file0
, file2
आदि।
निम्नलिखित उदाहरण में, पहला कमांड केवल मौजूदा नामों को स्पर्श करेगा जो दिए गए पैटर्न से मेल खाते हैं, जबकि दूसरी पंक्ति उन फ़ाइलों को बनाएगी जो पहले से मौजूद नहीं हैं:
touch file[0-9]
touch file{0..9}
file45.txt
। ब्रैकेट अभिव्यक्ति[...]
नियमित अभिव्यक्ति की तरह ही काम करती है, लेकिन "नहीं" कहने!
के^
लिए उपयोग करती है । एक[...]
पैटर्न हमेशा एक ही चरित्र से मेल खाएगा।