Je souhaite copier les fichiers modifiés dans un référentiel svn vers un autre répertoire, tout en conservant leur structure de répertoires.
Après avoir lu la page de manuel awk et xargs, je trouve un moyen d'obtenir des noms de fichiers modifiés comme ceci:
$ svn status -q | awk '{ print $2 }' | xargs -d \\n -I '{}' cp '{}' /tmp/xen/
Mais le problème est que de cette manière les structures de répertoires ne sont pas conservées, je veux copier des fichiers comme ceci:
./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
J'ai essayé de changer la commande cp en cp '{}' / tmp / xen / '{}' mais elle n'a dit aucun tel fichier ou répertoire. Existe-t-il un moyen de créer un fichier de copie cp et de créer un répertoire si nécessaire? Et veuillez indiquer si cette chaîne de commande peut être simplifiée. :-)
Merci pour toutes vos réponses. Puisque le répertoire est un peu grand, je ne veux pas copier tout le répertoire en utilisant cp -R ou rsync. La suggestion de CK d'utiliser un tuyau de goudron est très utile.
svn status -q | awk '{ print $2 }' | xargs tar cf - | (cd /tmp/xen/; tar xvf -)