Criação massiva de arquivos com bash

Criação massiva de arquivos com bash

Eu tenho tentado descobrir isso, tentei comandos diferentes e ainda não cheguei a lugar nenhum. Você pode me ajudar com esta questão?

No seu diretório inicial, crie um subdiretório chamado shirts. Dentro do subdiretório, crie 108 arquivos com nomes de arquivo no formato style.size.color.ext, onde 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}

Responder1

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 novamente tenta 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}

PS: você precisa ter certeza de que o diretório shirtsjá existe. Caso contrário, você receberá novamente o mesmo erro cannot touch.

Responder2

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

Então deveria ser

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

O que touchvocê está fazendo é criar um arquivo vazio, mas você está tentando criar um diretório com subdiretórios diferentes. touchnão posso fazer isso.

Editar: você também pode tornar o touchcmd acima mais curto/melhor:

touch {tee,crew,turtleneck}.{{X,XX,}L,M,{X,}S}.{red,yellow,blue}.{info,inv}

informação relacionada