Chci cp aaa/deep/sea/blob.psd
na bbb/deep/sea/blob.psd
Jak provedu kopii, pokud je deep
a sea
adresáře pod bbb
neexistují takže kopie vytvoří potřebné adresáře a zkopíruje soubor?
Právě teď vidímNo such file or directory
jako hlubina a moře neexistují.
Prohlédl jsem si stránky nápovědy pro muže a další otázky, ale nic mě nenapadlo.
Nejbližší mi je použití rcp
pro adresář:
rcp -r aaa/deep/sea/ bbb/deep/sea/
ačkoli to zkopíruje celý adresář a obsah a já chci jen jeden soubor. Pokus o to však dal cp: cannot create regular file bbb/deep/sea/blob.psd' such file or directory
Přijatá odpověď:
Zkuste pro takovou situaci použít následující funkci:
copy_wdir() { mkdir -p -- "$(dirname -- "$2")" && cp -- "$1" "$2" ; }
a použijte jej jako
copy_wdir aaa/deep/sea/blob.psd bbb/deep/sea/blob.psd
Mimochodem, GNU cp
má --parents
volba. Je to opravdu blízko tomu, co chcete, ale ne přesně.
Vytvoří také aaa
adresář, který zdánlivě nepotřebujete. Můžete však nejprve cd do aaa
a zkopírujte jako:
cd aaa && cp --parents deep/sea/blob.psd ../bbb/