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

11

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

Por exemplo, digamos que eu esteja em uma pasta vazia. Agora 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: cannot touch ‘nested/folder/deep/more.txt’: No such file or directory

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

    
por Jeff Puckett 26.08.2016 / 05:04

1 resposta

9

Você pode combinar os dois comandos em uma única linha. Se você usa uma variável, você pode fazer isso:

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 único comando, mas pode fazer o trabalho por você.

    
por 26.08.2016 / 06:10