it-swarm.com.de

Wie erstelle ich eine Datei und übergeordnete Verzeichnisse in einem Befehl?

Gibt es ein Flag/eine Option für touch, mkdir, > oder ein anderer Befehl, mit dem ich gleichzeitig eine Datei und nicht vorhandene übergeordnete Verzeichnisse erstellen kann?

Nehmen wir zum Beispiel an, ich bin in einem leeren Ordner. Jetzt kann ich übergeordnete Verzeichnisse erstellen, wenn sie beim Erstellen eines Ordners nicht vorhanden sind

mkdir -p nested/folder

Ich kann Dateien in vorhandenen Verzeichnissen erstellen

touch nested/folder/something.txt

Ich kann jedoch keine Datei in einem Verzeichnis erstellen, das noch nicht vorhanden ist

touch nested/folder/deep/more.txt

touch: kann "verschachtelt/Ordner/deep/more.txt" nicht berühren: Keine solche Datei oder kein solches Verzeichnis

Wie würde ich diesen deep Ordner zur gleichen Zeit erstellen, zu der ich more.txt?

25
Jeff Puckett

Sie können die beiden Befehle in einer einzigen Zeile kombinieren. Wenn Sie eine Variable verwenden, können Sie dies tun:

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

Und dann das:

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

Oder alle zusammen in einer Zeile wie folgt:

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

Es ist kein einziger Befehl, aber er könnte die Arbeit für Sie erledigen.

16
bashBedlam