Como faço vários diretórios de uma vez em um diretório?

25

Eu sei que com mkdir eu posso fazer mkdir A B C D E F para criar cada diretório. Como faço para criar diretórios A-Z ou 1-100 sem digitar cada letra ou número?

    
por Steve Burdine 18.08.2010 / 03:33

6 respostas

17

Provavelmente é mais fácil usar apenas um loop for :

for char in {A..Z}; do
    mkdir $char
done

for num in {1..100}; do
    mkdir $num
done

Você precisa de pelo menos o bash 3.0; caso contrário, você terá que usar algo como seq

    
por 18.08.2010 / 03:37
69

A sintaxe {} é a sintaxe Bash não vinculada à construção for .

mkdir {A..Z}

é suficiente por si só.

link

    
por 18.08.2010 / 03:49
8

Você também pode fazer combinações mais complexas (tente estas com echo em vez de mkdir , então não haverá limpeza depois):

Compare

$ 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

para

$ 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

Se você tiver o Bash 4, tente

$ echo file{0001..10}
file0001 file0002 file0003 file0004 file0005 file0006 file0007 file0008 file0009
file0010

e

$ echo file{0001..10..2}
file0001 file0003 file0005 file0007 file0009
    
por 19.08.2010 / 02:44
7

No Linux, você pode gerar sequências de dígitos com o comando "seq", mas isso não existe em todos os sistemas Unix. Por exemplo, para gerar diretórios de 1 a 100:

mkdir 'seq 1 100'

Enquanto você certamente pode criar diretórios de A a Z com utilitários de shell:

seq 65 90 \
    | while read foo; do printf "%b\n" 'printf '\\x%x\n' $foo'; done \
    | xargs mkdir

Provavelmente é muito menos feio usar apenas Perl:

perl -e 'foreach (ord "A"..ord "Z") { mkdir chr $_ }'
    
por 18.08.2010 / 03:46
-1

mkdir direct{1..3} resultará em mkdir direct1 direct2 direct3 e assim por diante. Mesmo para {a..z}

    
por 21.11.2018 / 19:35
-2

mkdir {A..Z} mkdir {0..100} mkdir test_ {A..Z} e assim por diante.

    
por 20.11.2018 / 17:37