Chcę skopiować zmodyfikowane pliki z repozytorium svn do innego katalogu, zachowując ich strukturę katalogów.
Po przeczytaniu strony awk i xargs znajduję sposób na zmianę nazw plików w następujący sposób:
$ svn status -q | awk '{ print $2 }' | xargs -d \\n -I '{}' cp '{}' /tmp/xen/
Problem polega na tym, że w ten sposób struktury katalogów nie są zachowywane, chcę skopiować pliki w następujący sposób:
./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
Próbowałem zmienić komendę cp na cp „{}” / tmp / xen / „{}”, ale nie było takiego pliku ani katalogu. Czy jest jakiś sposób, aby skopiować plik CP i utworzyć katalog, jeśli jest to wymagane? I proszę wskazać, czy ten łańcuch poleceń można uprościć. :-)
Dziękuję za wszystkie odpowiedzi. Ponieważ katalog jest trochę duży, nie chcę kopiować całego katalogu przy użyciu cp -R lub rsync. Sugestia CK dotycząca użycia rurki smołowej jest dość przydatna.
svn status -q | awk '{ print $2 }' | xargs tar cf - | (cd /tmp/xen/; tar xvf -)