Ich weiß, dass ich mit mkdir mkdir A B C D E F
jedes Verzeichnis erstellen kann . Wie erstelle ich Verzeichnisse von AZ oder 1-100, ohne jeden Buchstaben oder jede Zahl einzugeben?
Ich weiß, dass ich mit mkdir mkdir A B C D E F
jedes Verzeichnis erstellen kann . Wie erstelle ich Verzeichnisse von AZ oder 1-100, ohne jeden Buchstaben oder jede Zahl einzugeben?
Antworten:
Am einfachsten ist es wahrscheinlich, eine for
Schleife zu verwenden:
for char in {A..Z}; do
mkdir $char
done
for num in {1..100}; do
mkdir $num
done
Sie benötigen jedoch mindestens Bash 3.0. ansonsten musst du sowas benutzenseq
Die {}
Syntax ist die Bash-Syntax, die nicht an das for
Konstrukt gebunden ist .
mkdir {A..Z}
ist für sich allein ausreichend.
http://www.gnu.org/software/bash/manual/bashref.html#Brace-Expansion
mkdir -p ./logs-{1..5}
Sie können auch komplexere Kombinationen erstellen (probieren Sie diese echo
aus, mkdir
damit anschließend keine Bereinigung erfolgt):
Vergleichen Sie
$ 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
zu
$ 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
Wenn Sie Bash 4 haben, versuchen Sie es
$ echo file{0001..10}
file0001 file0002 file0003 file0004 file0005 file0006 file0007 file0008 file0009
file0010
und
$ echo file{0001..10..2}
file0001 file0003 file0005 file0007 file0009
Unter Linux können Sie mit dem Befehl "seq" Ziffernfolgen erzeugen, die jedoch nicht auf allen Unix-Systemen vorhanden sind. So generieren Sie beispielsweise Verzeichnisse von 1 bis 100:
mkdir `seq 1 100`
Mit Shell-Utils können Sie zwar durchaus Verzeichnisse von A bis Z erstellen:
seq 65 90 \
| while read foo; do printf "%b\n" `printf '\\\\x%x\n' $foo`; done \
| xargs mkdir
Es ist wahrscheinlich viel weniger hässlich, nur Perl zu verwenden:
perl -e 'foreach (ord "A"..ord "Z") { mkdir chr $_ }'
mkdir direct{1..3}
führt zu mkdir direct1 direct2 direct3
und so weiter. Gleiches gilt für{a..z}