Aynı anda birden fazla dizini bir dizinde nasıl yapabilirim?


25

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:


18

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


1
Michael teşekkürler! meraklı olmakla birlikte, {A..Z} 'da char için $ char önünde test eklemeye çalıştım; mkdir testi $ char bitirdim, bu bana rehberler testi verdi [AZ], her zaman öğrenmesi iyi
Steve Burdine

Akılda tutulması gereken bir şey, onları listelediklerinde veya * gibi joker karakterlerle kullandıklarında dosya adlarınızın nasıl sıralanacağıdır. '11' '2' den önce sıralayacaktır. Tüm sayıların baştaki sıfırlarla aynı uzunlukta olmasını ayarladıysanız, bu önlenebilir. Dennis Williams bash 4'te nasıl yapılacağını gösterir, ancak bash 4'ünüz yoksa senaryonuzu kodlamak için kodlayabilirsiniz.
Joe


8

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

7

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 $_ }'

-1

mkdir direct{1..3}sonuçlanacak mkdir direct1 direct2 direct3ve benzeri. Aynısı{a..z}


2
Bu, mevcut üç cevabın ve daha önce yorum yaptığımın
Jeff Schaller

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.