que estaba esperando:Bash: copia el nombre de archivos de forma recursiva, la preservación de la estructura de carpetas
cp -R src/prog.js images/icon.jpg /tmp/package
produciría una estructura simétrica en el directorio de destino:
/tmp
|
+-- package
|
+-- src
| |
| +-- prog.js
|
+-- images
|
+-- icon.jpg
pero en cambio, ambos de los archivos se copian en/tmp/paquete. Una copia plana. (Esto está en OSX).
¿Hay una función bash simple que pueda usar para copiar todos los archivos, incluidos los archivos especificados por comodín (por ejemplo, src/*. Js) en su lugar correcto en el directorio de destino. Un poco como "para cada archivo, ejecute mkdir -p $(dirname "$file"); cp "$file" $(dirname "$file")
", pero tal vez un solo comando.
This is a relevant thread, which suggests it's not possible. La solución del autor no es tan útil para mí, porque me gustaría simplemente proporcionar una lista de archivos, comodín o no, y tenerlos todos copiados en el directorio de destino. IIRC MS-DOS xcopy hace esto, pero parece que no hay equivalente para cp.
bien, así que hablé demasiado pronto. Me gusta esta respuesta mejor. – EMPraptor
gracias. resulta que "cp --parents" no es posible en mac, pero es bueno saber la bandera de otro unixen. rsync -R es la solución portátil más simple para este problema. – mahemoff
Acepté este por su elegancia/memorabilidad, pero acabo de descubrir que esto no copia directorios completos (al menos en OSX), mientras que el tar que figura a continuación sí lo hace. – mahemoff