디렉토리 구조를 유지하면서 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 -)