Solución 1:
El interruptor que necesitas es --parents
, por ejemplo:
[email protected]:~$ cp --parents test/1/.moo test2/
[email protected]:~$ ls -la test2/
total 42
drwxr-xr-x 3 jim jim 72 2010-09-14 09:32 .
drwxr-xr-x 356 jim jim 43136 2010-09-14 09:32 ..
drwxr-xr-x 3 jim jim 72 2010-09-14 09:32 test
[email protected]:~$ ls -la test2/test/1/.moo
-rw-r--r-- 1 jim jim 0 2010-09-14 09:32 test2/test/1/.moo
Solución 2:
También puedes usar rsync -R
, que funciona en OSX donde cp --parents
no está disponible.
https://stackoverflow.com/a/13855290/598940
Solución 3:
Usa tar
con algo como:
mkdir b; tar cpf - myProject/ | tar xpf - -C b/
(No probado. Pruébelo primero o pruébelo en un escenario de maqueta).
Solución 4:
Primero use mkdir -p
para crear la carpeta de destino con la creación recursiva de la ruta principal. Luego copie el contenido a la carpeta de destino:
mkdir -p b/myProject/.project
cp -r a/myProject/.project/file b/myProject/.project
Solución 5:
cp -P a/myProject/.project b
Ver man cp
para más información.