इसे इस्तेमाल करे:
for file in file{18..31}.txt
इसे "अनुक्रम अभिव्यक्ति" के रूप में जाना जाता है और यह बैश के ब्रेस एक्सपेंशन फ़ीचर का हिस्सा है । यह बैश 3 और 4 में काम करता है।
इंक्रीमेंट फीचर बैश 4 के लिए नया है। आपके पास शायद बैश 3.x है।
बैश 4 में, आप कर सकते हैं:
$ for i in {1..6..2}; do echo $i; done
1
3
5
लेकिन बैश 3 में, आपको एक ही परिणाम प्राप्त करने के लिए ऐसा करना होगा:
$ for ((i=1; i<=6; i+=2)); do echo $i; done
एक ही रूप में वृद्धि
$ for ((i=1; i<=6; i++)); do echo $i; done
संख्याओं में से कोई भी चर या भाव हो सकता है। हालाँकि, एक क्रम अभिव्यक्ति में संख्याओं को स्थिर होना पड़ता है
आपकी फ़ाइलों पर उस फ़ॉर्म का उपयोग करने का एक उदाहरण है:
for ((i=18; i<=31; i++))
do
echo "file${i}.txt"
done
बैश 4 में अनुक्रम अभिव्यक्तियों की एक और नई विशेषता अग्रणी शून्य को शामिल करने की क्षमता है। यह उपयोगी है यदि आप क्रमांकित फ़ाइलों को बनाना (और उपयोग करना) चाहते हैं जो ठीक से सॉर्ट किए जा सकते हैं।
बैश 4 में:
touch file{001..010}.txt
"file010.txt" के माध्यम से "file001.txt" नाम की फाइलें बनाएंगे। उनके नाम अपेक्षित क्रम में क्रमबद्ध होंगे। अग्रणी शून्य के बिना, "file10.txt" "file1.txt" से पहले सॉर्ट करेगा।
फ़ाइलों के साथ काम करने के लिए, आप उसी अग्रणी शून्य सिंटैक्स का उपयोग कर सकते हैं:
for file in file{001..010}.txt; do echo "$file"; done
बैश 3 में, यदि आपको अग्रणी शून्य की आवश्यकता है, तो आपको अपने आप को मान देना होगा:
for i in {1..10}
do
printf -v i '%03d' $i
echo "file${i}.txt"
done
यह printf
कथन अग्रणी शून्य के साथ i के मान को बढ़ाएगा, इसलिए चौड़ाई 3 है, उदाहरण के लिए ("4" "004") बन जाता है।
संपादित करें:
फ़ाइल नाम में रिक्त स्थान सीधा है:
$ touch "space name "{008..018..3}" more spaces"
$ ls -l sp*
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000008 more spaces
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000011 more spaces
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000014 more spaces
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000017 more spaces
$ for f in "space name "{008..018..3}" more spaces"; do mv "$f" "${f}.txt"; done
$ ls -l sp*
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000008 more spaces.txt
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000011 more spaces.txt
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000014 more spaces.txt
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000017 more spaces.txt
for
लूप का उपयोग करके समाधान शामिल करना है जो xargs का उपयोग करके फ़ाइल नाम में रिक्त स्थान की अनुमति देता है। यह काम करने लगता है यदि आपके पास 4 बैश नहीं है। यदि आपके पास 4 बैश है, तो निश्चित रूप से ब्रेस विस्तार का उपयोग करें! चयनित उत्तर देखें। स्नो लेपर्ड बैश को अपग्रेड करने के लिए बेशर्म प्लग