GNU/Linux >> Tutoriels Linux >  >> Linux

Comment toucher un fichier et mkdir si nécessaire en une seule ligne

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.


Linux
  1. Comment modifier les autorisations et les propriétaires via la ligne de commande

  2. Comment supprimer des fichiers et des répertoires sous Linux à partir de la ligne de commande

  3. Encoder le contenu du fichier et le répercuter sur une seule ligne ?

  4. Unix - créer le chemin des dossiers et des fichiers

  5. Une commande pour créer un répertoire et un fichier à l'intérieur de celui-ci commande linux

Comment lire un fichier ligne par ligne dans Bash

Comment diviser un gros fichier en parties à des numéros de ligne donnés

Comment travailler avec des liens durs et des liens souples sous Linux

Comment vérifier l'utilisation d'Inode à partir de cPanel et de la ligne de commande ?

Comment compresser un fichier et conserver le fichier .gz ?

Comment télécharger un fichier par FTP depuis la ligne de commande ?