मुझे पता है कि मैं mkdir के साथ mkdir A B C D E F
प्रत्येक निर्देशिका बनाने के लिए कर सकता हूं । मैं प्रत्येक अक्षर या संख्या में टाइपिंग के साथ निर्देशिका AZ या 1-100 कैसे बनाऊं?
मुझे पता है कि मैं mkdir के साथ mkdir A B C D E F
प्रत्येक निर्देशिका बनाने के लिए कर सकता हूं । मैं प्रत्येक अक्षर या संख्या में टाइपिंग के साथ निर्देशिका AZ या 1-100 कैसे बनाऊं?
जवाबों:
केवल एक for
लूप का उपयोग करना शायद सबसे आसान है :
for char in {A..Z}; do
mkdir $char
done
for num in {1..100}; do
mkdir $num
done
आपको कम से कम bash 3.0 की आवश्यकता है; अन्यथा आपको कुछ का उपयोग करना होगाseq
{}
वाक्य रचना से बंधा नहीं बैश वाक्य रचना है for
निर्माण।
mkdir {A..Z}
अपने आप में पर्याप्त है।
http://www.gnu.org/software/bash/manual/bashref.html#Brace-Expansion
mkdir -p ./logs-{1..5}
आप और अधिक जटिल संयोजन भी कर सकते हैं ( echo
इसके बजाय इनकी कोशिश करें mkdir
ताकि बाद में कोई सफाई न हो):
तुलना
$ echo pre-{{F..G},{3..4},{m..n}}-post
pre-F-post pre-G-post pre-3-post pre-4-post pre-m-post pre-n-post
सेवा मेरे
$ echo pre-{F..G}{3..4}{m..n}-post
pre-F3m-post pre-F3n-post pre-F4m-post pre-F4n-post pre-G3m-post pre-G3n-post
pre-G4m-post pre-G4n-post
यदि आपके पास बैश 4 है, तो प्रयास करें
$ echo file{0001..10}
file0001 file0002 file0003 file0004 file0005 file0006 file0007 file0008 file0009
file0010
तथा
$ echo file{0001..10..2}
file0001 file0003 file0005 file0007 file0009
लिनक्स पर आप "seq" कमांड के साथ अंकों के अनुक्रम उत्पन्न कर सकते हैं, लेकिन यह सभी यूनिक्स प्रणालियों पर मौजूद नहीं है। उदाहरण के लिए 1 से 100 तक निर्देशिका उत्पन्न करने के लिए:
mkdir `seq 1 100`
हालांकि आप निश्चित रूप से शेल बर्तनों के साथ A से Z तक निर्देशिका बना सकते हैं:
seq 65 90 \
| while read foo; do printf "%b\n" `printf '\\\\x%x\n' $foo`; done \
| xargs mkdir
यह शायद सिर्फ पर्ल का उपयोग करने के लिए बहुत कम बदसूरत है:
perl -e 'foreach (ord "A"..ord "Z") { mkdir chr $_ }'
mkdir direct{1..3}
में mkdir direct1 direct2 direct3
और इतने पर परिणाम होगा । उसी के लिए{a..z}