web-dev-qa-db-fra.com

Comment créer un fichier et des répertoires parents en une seule commande?

Y a-t-il un indicateur/option pour touch, mkdir, >, ou une autre commande qui me permettra de créer un fichier et tout répertoire parent inexistant en même temps?

Par exemple, disons que je suis dans un dossier vide. Maintenant, je peux créer des répertoires parents s'ils n'existent pas lors de la création d'un dossier

mkdir -p nested/folder

Je peux créer des fichiers dans des répertoires existants

touch nested/folder/something.txt

Mais je ne peux pas créer un fichier dans un répertoire qui n'existe pas encore

touch nested/folder/deep/more.txt

touch: impossible de toucher ‘nested/folder/deep/more.txt’: Aucun fichier ou répertoire de ce type

Comment créer ce dossier deep en même temps que je crée more.txt?

25
Jeff Puckett

Vous pouvez combiner les deux commandes sur une seule ligne. Si vous utilisez une variable, vous pouvez le faire:

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

Et puis ceci:

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

Ou tous ensemble sur une seule ligne comme celle-ci:

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

Ce n'est pas une seule commande, mais elle pourrait faire le travail pour vous.

16
bashBedlam