Voglio copiare i file modificati in un repository svn in un'altra directory, mantenendo la loro struttura di directory.
Dopo aver letto la manpage di awk e xargs trovo un modo per cambiare i nomi dei file in questo modo:
$ svn status -q | awk '{ print $2 }' | xargs -d \\n -I '{}' cp '{}' /tmp/xen/
Ma il problema è che in questo modo le strutture di directory non vengono conservate, voglio copiare file come questo:
./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
Ho provato a cambiare il comando cp in cp '{}' / tmp / xen / '{}' ma non è stato detto alcun file o directory. Esiste un modo per creare file di copia cp e creare directory se necessario? E ti preghiamo di sottolineare se questa catena di comandi può essere semplificata. :-)
Grazie per tutte le tue risposte Poiché la directory è un po 'grande, non voglio copiare l'intera directory usando cp -R o rsync. Il suggerimento di CK di usare una pipa per catrame è abbastanza utile.
svn status -q | awk '{ print $2 }' | xargs tar cf - | (cd /tmp/xen/; tar xvf -)