Quiero copiar archivos modificados en un repositorio svn a otro directorio, mientras mantengo su estructura de directorios.
Después de leer la página de manual de awk y xargs, encuentro una manera de cambiar los nombres de archivo de esta manera:
$ svn status -q | awk '{ print $2 }' | xargs -d \\n -I '{}' cp '{}' /tmp/xen/
Pero el problema es que de esta manera no se conservan las estructuras de directorios, quiero copiar archivos como este:
./common/superp.c -> /tmp/xen/common/superp.c
./common/m2mgr.c -> /tmp/xen/common/m2mgr.c
./common/page_alloc.c -> /tmp/xen/common/page_alloc.c
./arch/x86/mm.c -> /tmp/xen/arch/x86/mm.c
./arch/x86/mm/shadow/private.h -> /tmp/xen/arch/x86/mm/shadow/private.h
Intenté cambiar el comando cp a cp '{}' / tmp / xen / '{}' pero no dijo tal archivo o directorio. ¿Hay alguna forma de hacer un archivo de copia cp y crear un directorio si es necesario? Y señale si esta cadena de comandos se puede simplificar. :-)
Gracias por todas sus respuestas. Como el directorio es un poco grande, no quiero copiar todo el directorio usando cp -R o rsync. La sugerencia de CK de usar un tubo de alquitrán es bastante útil.
svn status -q | awk '{ print $2 }' | xargs tar cf - | (cd /tmp/xen/; tar xvf -)