Cómo hacer que el comando cp cree las carpetas necesarias para copiar un archivo a un destino [duplicado]

Resuelto omg asked hace 15 años • 0 respuestas

Al copiar un archivo cpen una carpeta que puede existir o no, ¿cómo puedo cpcrear la carpeta si es necesario? Esto es lo que he probado:

[root@file nutch-0.9]# cp -f urls-resume /nosuchdirectory/hi.txt
cp: cannot create regular file `/nosuchdirectory/hi.txt': No such file or directory
omg avatar Jun 04 '09 07:06 omg
Aceptado

Para ampliar la respuesta de Christian , la única forma confiable de hacerlo sería combinar mkdiry cp:

mkdir -p /foo/bar && cp myfile "$_"

Además, cuando solo necesita crear un único directorio en una jerarquía existente, rsyncpuede hacerlo en una sola operación. De hecho, soy un gran admirador rsyncporque es un reemplazo mucho más versátil :cp

rsync -a myfile /foo/bar/ # works if /foo exists but /foo/bar doesn't.  bar is created.
lhunath avatar Dec 29 '2012 19:12 lhunath

No sabía que podías hacer eso con cp.

Puedes hacerlo con mkdir..

mkdir -p /var/path/to/your/dir

EDITAR Vea la respuesta de lhunath para incorporar cp.

Christian avatar Jun 04 '2009 00:06 Christian

También se puede utilizar el comando find:

find ./ -depth -print | cpio -pvd newdirpathname
Jeff King avatar Nov 14 '2012 18:11 Jeff King
 mkdir -p `dirname /nosuchdirectory/hi.txt` && cp -r urls-resume /nosuchdirectory/hi.txt
Jamie McCrindle avatar Feb 09 '2014 15:02 Jamie McCrindle