ディレクトリ構造を維持しながら、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 -)