desenv-web-rp.com

Como criar um arquivo e diretórios pai em um comando?

Existe um sinalizador/opção para touch, mkdir, >, ou algum outro comando que me permita criar um arquivo e qualquer diretório pai inexistente ao mesmo tempo?

Por exemplo, digamos que estou em uma pasta vazia. Agora eu posso criar diretórios pai se eles não existirem ao criar uma pasta

mkdir -p nested/folder

Eu posso criar arquivos em diretórios existentes

touch nested/folder/something.txt

Mas não consigo criar um arquivo em um diretório que ainda não existe

touch nested/folder/deep/more.txt

touch: não é possível tocar em "aninhado/pasta/deep/more.txt": esse arquivo ou diretório não existe

Como eu criaria essa pasta deep ao mesmo tempo em que criava more.txt?

25
Jeff Puckett

Você pode combinar os dois comandos em uma única linha. Se você usar uma variável, poderá fazer o seguinte:

file="./nested/folder/deep/more.txt"

E então isso:

mkdir -p "${file%/*}" && touch "$file"

Ou todos juntos em uma linha como esta:

mkdir -p "./nested/folder/deep" && touch "./nested/folder/deep/more.txt"

Não é um comando único, mas pode fazer o trabalho para você.

16
bashBedlam