Como posso criar pastas em pastas no terminal

12

Eu tenho uma pasta chamada musiconde, dentro, há todas as pastas de artistas. Existe uma maneira de criar essas pastas: 1. Albums, 2. EP, 3. Singles, 4. Liveem todas as pastas artista com um comando?

wjandrea
fonte

Respostas:

12

Claro, execute isso na pasta de músicas onde estão as pastas do artista:

for artist in */; do
   for folder in "1. Albums" "2. EP" "3. Singles" "4. Live"; do
      mkdir "$artist/$folder"
   done
done

Você pode executar isso na sua CLI ou torná-lo um script de shell adicionando #!/bin/shcomo primeira linha e salvando-o em um arquivo. Não esqueça de tornar o arquivo executável.

Quanto ao que faz: itera sobre todos os diretórios ( */) dentro do diretório atual; em seguida, para cada um desses diretórios, itera sobre a subpasta desejada (a segunda for) e, em seguida , cria a subpasta (relativa) desejada.

jawtheshark
fonte
1
Ah, é lindo, isso vai entrar para a história ;-) #
Steve Steve
18

Você pode usar seu aparelho {curly} para este

Para esse argumento, fingiremos que ./music não existe

Em seu diretório base para ./music, usaremos o comando -p para criar subdiretórios quando necessário e os chavetas serão usadas para criar uma pequena matriz

O comando -pé curto para o pai, se é mais fácil de lembrar que você pode usar --parentem vez

mkdir -p ./music/{"1. Albums","2. EP","3. Singles","4. Live"}

Se você quiser brincar com isso, pode, por exemplo

mkdir -p ./folder/prefix{a{1/only,2,3},b,c}suffix/more{z,y,x}

Você tem expressões aninhadas, pode inserir os chavetas no meio de uma sequência e também pode permitir que o subdiretório siga o exemplo, além de ser específico com seus subdiretórios para uma matriz específica

Eu sugiro que você crie um arquivo em algum lugar onde você possa criar seus próprios modelos com esses comandos e fornecer descrições

Visite esta página para obter mais informações https://www.linuxjournal.com/content/bash-brace-expansion e https://www.linux.com/tutorials/all-about-curly-braces-bash/

Steve
fonte
5
Pessoalmente, eu gosto mais dessa resposta, porque não precisa que você pense como programador. Eu raramente uso o método de chaves, mas é muito mais elegante.
Jawtheshark # 16/19
6
OP quer a 4 subdir colocado no interior de cada si subdir de music, de modo que o arg correcta para mkdirseria./music/*/{"1. Albums","2. EP","3. Singles","4. Live"}
joH1
1
Para sua informação, -pé a forma abreviada de --parent.
Amedee Van Gasse