Cómo hacer que el comando cp cree las carpetas necesarias para copiar un archivo a un destino [duplicado]
Al copiar un archivo cp
en una carpeta que puede existir o no, ¿cómo puedo cp
crear 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
Aceptado
Para ampliar la respuesta de Christian , la única forma confiable de hacerlo sería combinar mkdir
y cp
:
mkdir -p /foo/bar && cp myfile "$_"
Además, cuando solo necesita crear un único directorio en una jerarquía existente, rsync
puede hacerlo en una sola operación. De hecho, soy un gran admirador rsync
porque 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.
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.
También se puede utilizar el comando find
:
find ./ -depth -print | cpio -pvd newdirpathname
mkdir -p `dirname /nosuchdirectory/hi.txt` && cp -r urls-resume /nosuchdirectory/hi.txt