Ich möchte geänderte Dateien in einem SVN-Repository in ein anderes Verzeichnis kopieren und dabei die Verzeichnisstruktur beibehalten.
Nachdem ich die Hilfeseiten awk und xargs gelesen habe, finde ich eine Möglichkeit, die Dateinamen wie folgt zu ändern:
$ svn status -q | awk '{ print $2 }' | xargs -d \\n -I '{}' cp '{}' /tmp/xen/
Das Problem ist aber, dass auf diese Weise Verzeichnisstrukturen nicht erhalten bleiben, ich möchte Dateien wie diese kopieren:
./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
Ich habe versucht, den Befehl cp in cp '{}' / tmp / xen / '{}' zu ändern , aber es wurde keine solche Datei oder kein solches Verzeichnis angegeben. Gibt es eine Möglichkeit, eine cp-Datei zu kopieren und ein Verzeichnis zu erstellen, falls erforderlich? Und bitte weisen Sie darauf hin, ob diese Befehlskette vereinfacht werden kann. :-)
Vielen Dank für alle Ihre Antworten. Da das Verzeichnis etwas groß ist, möchte ich nicht das gesamte Verzeichnis mit cp -R oder rsync kopieren. Der Vorschlag von CK, eine Teerpfeife zu verwenden, ist sehr nützlich.
svn status -q | awk '{ print $2 }' | xargs tar cf - | (cd /tmp/xen/; tar xvf -)