Como criar diretório variando de 1 a enésimo?

5

No meu cenário, tenho algumas fotos e quero mantê-las separadas. No momento, estou fazendo mkdir gallery1 gallery2 gallery3 gallery4 gallery5 gallery6 , mas isso é uma dor. Eu acho que podemos fazer isso mais facilmente. Suponha que eu queira criar diretórios de galeria7 para galeria50 . Como eu faria isso?

    
por Santosh Kumar 18.12.2012 / 06:42

5 respostas

12

Com expansão de chaves.

mkdir gallery{1..50}
    
por 18.12.2012 / 07:00
5

Enquanto já existem boas respostas, e você já começou, eu vou jogar o meu de qualquer maneira.

Eu sempre prefiro fazer arquivos sequenciados numericamente com zeros à esquerda, assim:

mkdir $(printf "gallery%02d\n" {1..50})

Isso lhe dará diretórios gallery01 a gallery50 . Isso ajuda a mantê-los bem alinhados e na ordem correta ao ordenar.

    
por 18.12.2012 / 07:57
4

Como a expansão da chave brace não é suportada por todos os shells, você também pode usar seq do coreutils :

for i in $(seq -w 1 50)
do
    mkdir "gallery$i"
done

A opção -w é para largura igual , isto é, criando galeria01 , galeria02 etc.

    
por 18.12.2012 / 15:27
0

Você pode usar a expansão de chaves em um script bash. A seguir cria os diretórios gallery7 para gallery50 no diretório atual:

#!/bin/bash
for i in {5..70}
do
   mkdir "gallery$i"
done
    
por 18.12.2012 / 07:00
0

Tente primeiro com o que será resolvido:

seq -f 'mkdir gallery%g' 50

antes de enviar a saída para o shell com:

seq -f 'mkdir gallery%g' 50 | sh

Isso cria pastas com um zero inicial:

seq -f 'mkdir gallery%02g' 50 | sh
    
por 26.11.2013 / 12:07