Quiero cp aaa/deep/sea/blob.psd a bbb/deep/sea/blob.psd
¿Cómo hago la copia si el deep y sea directorios no existen bajo bbb para que la copia cree los directorios que se necesitan y copie el archivo?
En este momento obtengoNo such file or directory como profundidad y mar no existen.
Revisé las páginas de ayuda del hombre y otras preguntas, pero nada me llama la atención.
Lo más cercano que tengo es usar rcp para el directorio:
rcp -r aaa/deep/sea/ bbb/deep/sea/
aunque esto copia todo el directorio y el contenido y solo quiero un archivo. Sin embargo, tratar de hacer eso le dio a cp: cannot create regular file bbb/deep/sea/blob.psd' such file or directory
Respuesta aceptada:
Intente usar la siguiente función para tal situación:
copy_wdir() { mkdir -p -- "$(dirname -- "$2")" && cp -- "$1" "$2" ; }
y usarlo como
copy_wdir aaa/deep/sea/blob.psd bbb/deep/sea/blob.psd
Por cierto, GNU cp tiene un --parents opción. Está muy cerca de lo que quieres, pero no exactamente.
También creará aaa directorio que parece que no necesita. Sin embargo, primero puede hacer un cd a aaa y copiar como:
cd aaa && cp --parents deep/sea/blob.psd ../bbb/