[2-57]एक चरित्र से मिलकर सेट है 2, 3, 4, 5और 7वहाँ, zsh और हर दूसरे वाइल्डकार्ड और regexp वाक्य रचना में बाहर। आपका ग्लोब पैटर्न *[2-57]हर फ़ाइल नाम से मेल खाता है जिसका अंतिम चरित्र उन पाँच अंकों में से एक है।
मुझे लगता है कि आप [m,n] ग्लोब क्वालिफायर के सिंटैक्स को गलत बता रहे हैं । ग्लोब क्वालिफायर हमेशा पैटर्न के अंत में कोष्ठक में जाते हैं, और रेंज विभाजक अल्पविराम होता है। पैटर्न *([2,57])2, 3,…, 57 वें मैच तक फैलता है। डिफ़ॉल्ट विस्तार आदेश लेक्सिकोग्राफ़िक है (कुछ विशेष जादू के साथ संख्यात्मक क्रम में संख्याओं को सॉर्ट करने के लिए यदि numeric_glob_sortविकल्प सेट है); आप इसे oया Oग्लोब क्वालिफायर के साथ नियंत्रित कर सकते हैं (उदाहरण के *(om[2,57])लिए हाल के एक फ़ाइल को छोड़कर 57 सबसे हाल की फ़ाइल से मिलान करना)।
for x in /foo/bar/*([2,57]); do print $x; done
भविष्य के पाठकों के लिए आपने जो नहीं पूछा, लेकिन संबंधित और संभवतः उपयोगी: यदि आप फ़ाइलों को 2 से 57 तक एनुमरेट करना चाहते हैं, तो वे मौजूद हैं या नहीं, आप रेंज ब्रेस अभिव्यक्ति का उपयोग कर सकते हैं । यह सुविधा बाश और क्ष में भी मौजूद है।
echo hello{2..57}
और यदि आप उन फ़ाइलों से मेल खाना चाहते हैं जिनके नाम में 2 और 57 के बीच की संख्या है, तो आप पैटर्न का उपयोग कर सकते हैं <2-57>। यह zsh के लिए विशिष्ट है।
$ ls
file1 file2 file3 file57 file58
$ echo file<2-57>
file2 file3 file57
ध्यान दें कि एक पैटर्न जैसा *<2-57>कि आप अपेक्षा करते हैं वैसा नहीं है, क्योंकि *अंकों का भी मिलान हो सकता है। उदाहरण के लिए, file58से मेल खाता है *<2-57>, साथ file5मिलान *हिस्सा है और 8मिलान <2-57>हिस्सा। पैटर्न *[^0-9]<2-57>इस मुद्दे से बचता है।