V perlu pomocí jednoho z mých oblíbených modulů:Path::Tiny.
path("/opt/test/test.txt")->touchpath;
Od dokumentu:
Kombinuje mkpath a touch. Vytvoří nadřazený adresář, pokud neexistuje, než se dotknete souboru.
Velmi málo rád píšu, takže jsem tento příkaz vložil do pojmenovaného fn ve svém profilu .profile, ale tuto formulaci jsem používal roky, než jsem to udělal:
mkdir -p dirname/sub/dir && touch $_/filename.ext
Proměnná $_
uloží poslední argument do předchozího příkazu. Docela užitečné vědět o celkově.
mkdir B && touch B/myfile.txt
Případně vytvořte funkci:
mkfile() {
mkdir -p $( dirname "$1") && touch "$1"
}
Spusťte jej s 1 argumenty:filepath. Říká:
mkfile B/C/D/myfile.txt
vytvoří soubor myfile.txt v adresáři B/C/D.
Ve skriptu shellu můžete jednoduše provést:
mkdir -p /opt/test && touch /opt/test/test.txt
mkdir -p
neselže (a neudělá nic), pokud adresář již existuje.
V perlu použijte make_path
z File::Path
modul, pak vytvořte soubor, jak chcete. make_path
také nedělá nic, pokud adresář již existuje, takže není třeba se sami kontrolovat.