我想将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 -)