Я хочу скопіювати модифіковані файли у сховищі svn до іншого каталогу, зберігаючи їх структуру каталогів.
Прочитавши сторінку 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 -)