Criando arquivos massivamente com o bash

5

Eu tenho tentado descobrir isso, tentei comandos diferentes e ainda não consegui nenhum lugar. Você pode me ajudar com essa pergunta?

Em seu diretório pessoal, crie um subdiretório chamado camisas. Dentro do subdiretório, crie 108 arquivos com nomes de arquivos no formato style.size.color.ext, em que cada arquivo contém uma combinação de valores da tabela a seguir.

Style   tee, crew, turtleneck
Size    XXL, XL, L, M, S, XS
Color   red, yellow, blue
Extension   info, inv

Este é o último comando que usei.

$ touch shirts/{tee,crew,turtleneck}.{XXL,XL,L,M,S,XS}.{red,yellow,blue}/{info,inv}
    
por user72510 14.06.2014 / 17:27

2 respostas

9

Há um pequeno erro no seu comando de toque. Seu comando original,

touch shirts/{tee,crew,turtleneck}.{XXL,XL,L,M,S,XS}.{red,yellow,blue}/{info,inv}

No final, há um / que tenta novamente criar um diretório e, como o diretório não existe, você receberá um erro como

touch: cannot touch '/shirts/turtleneck.XS.blue/inv': No such file or directory

No entanto, como você precisa apenas de arquivos, é necessário alterar o comando original como

touch shirts/{tee,crew,turtleneck}.{XXL,XL,L,M,S,XS}.{red,yellow,blue}.{info,inv}

P.S : Você precisa ter certeza de que o diretório shirts já existe. Caso contrário, você receberá novamente o mesmo erro cannot touch .

    
por 14.06.2014 / 17:41
1

De acordo com sua descrição, o nome de cada um desses 108 arquivos deve seguir o formato style.size.color.ext .

Então deve ser

mkdir shirts
touch {tee,crew,turtleneck}.{XXL,XL,L,M,S,XS}.{red,yellow,blue}.{info,inv}

O que o touch está fazendo é criar um arquivo vazio, mas você está tentando criar um diretório de camisetas com diferentes subdiretórios. touch não pode fazer isso.

Editar: você também pode deixar o touch cmd mais curto / parecer melhor:

touch {tee,crew,turtleneck}.{{X,XX,}L,M,{X,}S}.{red,yellow,blue}.{info,inv}
    
por 14.06.2014 / 17:43