Я хочу скопировать измененные файлы в хранилище SVN в другой каталог, сохраняя при этом их структуру каталогов.
Прочитав man-страницу awk и xargs, я нашел способ получить измененные имена файлов:
$ svn status -q | awk '{ print $2 }' | xargs -d \\n -I '{}' cp '{}' /tmp/xen/
Но проблема в том, что таким образом структуры каталогов не сохраняются, я хочу скопировать файлы следующим образом:
./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
Я попытался изменить команду cp на cp '{}' / tmp / xen / '{}', но он не указал ни одного файла или каталога. Есть ли способ сделать файл копирования cp и создать каталог, если требуется? И, пожалуйста, укажите, можно ли упростить эту цепочку команд. :-)
Спасибо за все ваши ответы. Поскольку каталог немного велик, я не хочу копировать весь каталог с помощью cp -R или rsync. Предложение CK об использовании смоляной трубы весьма полезно.
svn status -q | awk '{ print $2 }' | xargs tar cf - | (cd /tmp/xen/; tar xvf -)