[2-57]একটি অক্ষর সম্বলিত সেট 2, 3, 4, 5এবং 7সেখানে zsh এবং প্রত্যেক অন্যান্য ওয়াইল্ডকার্ড এবং regexp সিনট্যাক্স আউট। আপনার গ্লোব প্যাটার্ন *[2-57]প্রতিটি ফাইলের সাথে মেলে যার শেষ অক্ষর সেই পাঁচটি সংখ্যার মধ্যে একটি।
আমি মনে করি আপনি গ্লোব [m,n] কোয়ালিফায়ারের সিনট্যাক্সকে ভুলভাবে বিবেচনা করছেন । গ্লোব কোয়ালিফায়াররা সর্বদা প্যাটার্নের শেষে বন্ধনীতে যায়, এবং পরিসীমা বিভাজক একটি কমা। প্যাটার্নটি *([2,57])দ্বিতীয়, তৃতীয়,…, 57 তম ম্যাচে প্রসারিত। ডিফল্ট সম্প্রসারণ ক্রমটি শব্দের সাথে সম্পর্কিত হয় ( numeric_glob_sortবিকল্পটি সেট করা থাকলে সংখ্যার সাথে সারণিতে কিছু বিশেষ যাদু সহ ); আপনার সাথে নিয়ন্ত্রণ করতে পারেন oবা Oউল্লিখিত glob কোয়ালিফায়ার (যেমন *(om[2,57])এক সাম্প্রতিকতম ফাইল ছাড়া 57 সাম্প্রতিকতম ফাইল মেলে)।
for x in /foo/bar/*([2,57]); do print $x; done
আপনি যা চেয়েছিলেন তা নয়, তবে ভবিষ্যতের পাঠকদের জন্য সম্পর্কিত এবং সম্ভবত দরকারী: আপনি যদি ফাইলগুলি 2 থেকে 57 এর মধ্যে উপস্থিত থাকেন বা না থাকুক তবে তার পরিসীমা ব্রেস এক্সপ্রেশন ব্যবহার করতে পারেন । এই বৈশিষ্ট্যটি bash এবং ksh এও বিদ্যমান।
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>এই সমস্যাটিকে এড়িয়ে চলে।