2014-07-10 12 views
8

Con l'opzione -p (--parents), mkdir crea le directory madri se necessario.Comando Bash per creare un nuovo file e le relative directory principali, se necessario

touch, vim o > possono creare nuovi file in bash, ma solo quando esistono le directory madri.

Come creare un nuovo file e le relative directory madri se necessario, in un unico comando? proprio come quello che il -p fa per mkdir

+2

risposta accettato non è in bash o una linea? –

+0

@MartinKonecny ​​No. La mia intenzione era chiedere un comando 'prime'. Sembra che non ci sia un simile comando. Quindi ho appena accettato la prima risposta. –

risposta

11

installazione è tuo amico:

install -Dv /dev/null some/new/path/base-filename 
+1

questo è quello che voglio! Molte grazie. –

+1

Nota: 'make -p' non cambia se stesso o le sottocartelle se esiste, ma' install/dev/null DEST' troncherà (vuoto) il file se è già lì. –

+0

Grazie, questo ha aiutato: D Btw, puoi saltare -v flag. – Lazyexpert

7

Ecco un guscio funzione:

mkfileP() { mkdir -p "$(dirname "$1")" || return; touch "$1"; } 

# Sample call 
mkfileP "./newSubDir/test.txt" && echo 'created or touched' || echo 'failure' 

È possibile inserire nel tuo profilo della shell, per esempio.

In alternativa, implementare come un sceneggiatura (aggiungere la gestione degli errori e della riga di comando di aiuto, se necessario):

#!/usr/bin/env bash 

mkdir -p "$(dirname "$1")" || exit 
touch "$1" 
Problemi correlati