Mkdir ile mkdir A B C D E Fher dizini oluşturmak için yapabileceğimi biliyorum . Her bir harf veya sayıyı yazmadan AZ veya 1-100 dizinlerini nasıl oluşturabilirim?
Mkdir ile mkdir A B C D E Fher dizini oluşturmak için yapabileceğimi biliyorum . Her bir harf veya sayıyı yazmadan AZ veya 1-100 dizinlerini nasıl oluşturabilirim?
Yanıtlar:
Sadece bir fordöngü kullanmak muhtemelen çok kolaydır :
for char in {A..Z}; do
mkdir $char
done
for num in {1..100}; do
mkdir $num
done
En azından bash 3.0'a ihtiyacınız var; Aksi takdirde, gibi bir şey kullanmak zorundaseq
{}Sözdizimi bağlı olmayan Bash sözdizimi foryapı.
mkdir {A..Z}
tek başına yeterli.
http://www.gnu.org/software/bash/manual/bashref.html#Brace-Expansion
mkdir -p ./logs-{1..5}
Daha karmaşık kombinasyonlar da yapabilirsiniz ( echobunun yerine bunları deneyin ; mkdirböylece daha sonra temizleme işlemi yoktur):
Karşılaştırmak
$ 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
için
$ 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
Bash 4'ünüz varsa, deneyin
$ echo file{0001..10}
file0001 file0002 file0003 file0004 file0005 file0006 file0007 file0008 file0009
file0010
ve
$ echo file{0001..10..2}
file0001 file0003 file0005 file0007 file0009
Linux'ta "seq" komutuyla basamak dizileri oluşturabilirsiniz, ancak bu tüm Unix sistemlerinde mevcut değildir. Örneğin 1'den 100'e kadar dizin oluşturmak için:
mkdir `seq 1 100`
Kesinlikle A'dan Z'ye dizinleri kabukları ile yapabilirsiniz.
seq 65 90 \
| while read foo; do printf "%b\n" `printf '\\\\x%x\n' $foo`; done \
| xargs mkdir
Perl'i kullanmak muhtemelen çok daha az çirkindir:
perl -e 'foreach (ord "A"..ord "Z") { mkdir chr $_ }'
mkdir direct{1..3}sonuçlanacak mkdir direct1 direct2 direct3ve benzeri. Aynısı{a..z}