Bir svn deposundaki değiştirilmiş dosyaları dizin yapısını korurken başka bir dizine kopyalamak istiyorum.
Awk ve xargs manpage okuduktan sonra böyle değiştirilmiş dosya adlarını almanın bir yolunu buluyorum:
$ svn status -q | awk '{ print $2 }' | xargs -d \\n -I '{}' cp '{}' /tmp/xen/
Ama sorun bu şekilde dizin yapıları korunmaz, ben böyle dosyaları kopyalamak istiyorum:
./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 komutunu cp '{}' / tmp / xen / '{}' olarak değiştirmeye çalıştım ama böyle bir dosya veya dizin yok dedi. Gerekirse cp kopya dosyası oluşturmanın ve dizin oluşturmanın bir yolu var mı? Lütfen bu komut zincirinin basitleştirilip birleştirilemeyeceğini belirtin. :-)
Tüm cevaplarınız için teşekkürler. Dizin biraz büyük olduğundan, tüm dizini cp -R veya rsync kullanarak kopyalamak istemiyorum. CK'nin katran borusu kullanma önerisi oldukça yararlıdır.
svn status -q | awk '{ print $2 }' | xargs tar cf - | (cd /tmp/xen/; tar xvf -)