En perl, en utilisant un de mes modules favoris :Path::Tiny.
path("/opt/test/test.txt")->touchpath;
De la doc :
Combine mkpath et tactile. Crée le répertoire parent s'il n'existe pas, avant de toucher le fichier.
J'aime très peu taper, alors j'ai mis cette commande dans un fn nommé dans mon .profile, mais j'ai utilisé cette formulation pendant des années avant de le faire :
mkdir -p dirname/sub/dir && touch $_/filename.ext
La variable $_
stocke le dernier argument de la commande précédente. Assez pratique à savoir sur l'ensemble.
mkdir B && touch B/myfile.txt
Vous pouvez également créer une fonction :
mkfile() {
mkdir -p $( dirname "$1") && touch "$1"
}
Exécutez-le avec 1 argument :filepath. Dire :
mkfile B/C/D/myfile.txt
créerait le fichier myfile.txt dans le répertoire B/C/D.
Dans un script shell, vous pouvez simplement faire :
mkdir -p /opt/test && touch /opt/test/test.txt
mkdir -p
n'échouera pas (et ne fera rien) si le répertoire existe déjà.
En perl, utilisez make_path
du File::Path
module, puis créez le fichier comme vous le souhaitez. make_path
ne fait rien non plus si le répertoire existe déjà, donc pas besoin de vérifier vous-même.