In Perl mit einem meiner Lieblingsmodule:Path::Tiny.
path("/opt/test/test.txt")->touchpath;
Aus dem Dokument:
Kombiniert mkpath und touch. Erstellt das übergeordnete Verzeichnis, falls es nicht existiert, bevor die Datei berührt wird.
Ich tippe sehr wenig gerne, also habe ich diesen Befehl in ein benanntes fn in meiner .profile-Datei eingefügt, aber ich habe diese Formulierung jahrelang verwendet, bevor ich es tat:
mkdir -p dirname/sub/dir && touch $_/filename.ext
Die Variable $_
speichert das letzte Argument des vorherigen Befehls. Ziemlich praktisch, alles über alles zu wissen.
mkdir B && touch B/myfile.txt
Erstellen Sie alternativ eine Funktion:
mkfile() {
mkdir -p $( dirname "$1") && touch "$1"
}
Führen Sie es mit 1 Argumenten aus:Dateipfad. Sprichwort:
mkfile B/C/D/myfile.txt
würde die Datei myfile.txt im Verzeichnis B/C/D erstellen.
In einem Shell-Skript können Sie einfach Folgendes tun:
mkdir -p /opt/test && touch /opt/test/test.txt
mkdir -p
wird nicht fehlschlagen (und nichts tun), wenn das Verzeichnis bereits existiert.
Verwenden Sie in Perl make_path
von File::Path
Modul, dann erstellen Sie die Datei wie Sie wollen. make_path
tut auch nichts, wenn das Verzeichnis bereits existiert, also müssen Sie nicht selbst nachsehen.