Voglio cp aaa/deep/sea/blob.psd
a bbb/deep/sea/blob.psd
Come faccio a copiare se il deep
e sea
le directory non esistono in bbb
in modo che la copia crei le directory necessarie e copi il file?
In questo momento ricevoNo such file or directory
come il profondo e il mare non esistono.
Ho dato un'occhiata alle pagine della guida di Man e ad altre domande, ma non mi viene in mente nulla.
Il più vicino che ho è usare rcp
per la directory:
rcp -r aaa/deep/sea/ bbb/deep/sea/
anche se questo copia l'intera directory e il contenuto e voglio solo un file. Cercando di farlo, tuttavia, cp: cannot create regular file bbb/deep/sea/blob.psd' such file or directory
Risposta accettata:
Prova a utilizzare tale funzione successiva per tale situazione:
copy_wdir() { mkdir -p -- "$(dirname -- "$2")" && cp -- "$1" "$2" ; }
e usalo come
copy_wdir aaa/deep/sea/blob.psd bbb/deep/sea/blob.psd
A proposito, GNU cp
ha un --parents
opzione. È davvero vicino a quello che vuoi, ma non esattamente.
Creerà anche aaa
directory che sembra non ti serva. Comunque puoi prima cd su aaa
e copia come:
cd aaa && cp --parents deep/sea/blob.psd ../bbb/