ソースディレクトリからターゲットベースディレクトリにファイルをコピーし、ソースパスを維持する

ソースディレクトリからターゲットベースディレクトリにファイルをコピーし、ソースパスを維持する

申し訳ありませんが、私はおそらく問題を説明するのに適切な用語を使用しておらず、いくつかの一般的なコマンドの最も基本的な使用法を誤解しています。

コピーしたいファイルを検索する簡単な find ステートメントがあります。-exec cp {} を追加して、cp でソース ディレクトリから新しいベース ディレクトリにファイルをコピーしますが、フル パスを含めます。例:

  • find . -name *.txt見つける/user/username/projects/source.txt
  • cp {} [now what?]ファイルをコピーする/user/newuser/projects/source.txt

答え1

rsync -rlpv --files-from=<(find ...) /user/username/projects /user/newuser

答え2

すべてのサブディレクトリが存在することを確信できる場合は、これが楽しいオプションです。

cd /user/username/
find . -name \*.gz | sed 's/\.\(.*\)/.\1 ..\/newuser\1/' | xargs -n2 cp

関連情報