Usando colchetes (chaves) para criar uma estrutura de pastas com o `mkdir -p`

16

Como man mkdirafirma

   -p, --parents
          no error if existing, make parent directories as needed

Quando eu executei este comando

mkdir -p work/{F1,F2,F3}/{temp1,temp2}

Ele cria uma estrutura de pastas como esta workpasta pai, então F1, F2, F3pastas filho e temp1e temp2pastas filho com menos de três pasta pai F1, F2, F3.

   work
     -F1
       -temp1
       -temp2
     -F2
       -temp1
       -temp2
     -F3
       -temp1
       -temp2

Agora o problema é que eu quero criar temp1, temp2pastas somente sob F1não sob F2e F3, mas estou confuso sobre como eu posso escrever um comando para fazer o que quero.

mr_eclair
fonte
@Caleb: desculpe, eu não estava ciente de que estávamos ambos a edição, ao mesmo tempo, parece que a fusão revisão não é implementado pelo SE: - /
Stéphane Gimenez
@ Stephanie: Não se preocupe. Fiz várias edições e é muito raro que duas edições importantes sejam derrotadas dessa maneira. Obrigado por contribuir!
Caleb

Respostas:

25

Talvez seja isso que você está procurando?

 mkdir -p work/{F1/{temp1,temp2},F2,F3}
Stéphane Gimenez
fonte
Ei, eu queria saber recentemente se as coisas poderiam ser feitas tão simples como isso. Obrigado!
rozcietrzewiacz
2

Uma descrição muito boa da expansão de chaves (com exemplos) pode ser encontrada na subseção Brace Expansiondo manual do bash ( man bashpressione /para iniciar a pesquisa Brace Expansion).

rozcietrzewiacz
fonte
Obrigado, sua resposta me levou a este ótimo guia! Só precisava saber que se chama "Brace Expansion", então eu sabia o que pesquisar no Google. linuxcommand.org/lc3_lts0080.php Trecho: "Talvez a expansão mais estranho é chamado de expansão cinta Com ele, você pode criar várias seqüências de texto de um padrão contendo chaves Aqui está um exemplo:.. [me@linuxbox me]$ echo Front-{A,B,C}-Back Front-A-Back Front-B-Back Front-C-Back"
Rock Lee
0
mkdir -p work/F{1..3} work/F1/temp{1,2}

Isso primeiro cria worke os três subdiretórios antes de criar os diretórios de nível inferior de work/F1. É fácil de ler e entender.

Ou, se você absolutamente precisar combinar tudo em uma única expressão de monstro (não há absolutamente nenhuma necessidade, pois é difícil ler e manter):

mkdir -p work/F{1/temp{1,2},2,3}
Kusalananda
fonte