ファイルを見つけてコピーすると、フォルダ構造はそのまま残ります

ファイルを見つけてコピーすると、フォルダ構造はそのまま残ります

過去60分以内に作成または変更されたファイルを検索しています。私はこれを通してこれを見つけました

find ~/data/ -cmin -60 -mmin -60 -type f

~メインディレクトリ/usr/wg/

後でこのファイルをコピーしてデフォルトのフォルダ構造を維持したいと思います... findコマンドの結果は、たとえば...

/usr/wg/data/foo1/file1.txt
/usr/wg/data/foo2/bar2/file2.txt
...

今私が使うとき

rsync -a `find ~/data/ -cmin -60 -mmin -60 -type f` ~/vee/

~/vee/私が得るフォルダから

/usr/wg/vee/usr/wg/data/foo1/file1.txt
/usr/wg/vee/usr/wg/data/foo2/bar2/file2.txt
...

欲しいけど

/usr/wg/vee/foo1/file1.txt
/usr/wg/vee/foo2/bar2/file2.txt
...

どうやってこれを達成できますか?私が探しています

  1. フォルダ構造を維持しながら変更されたファイルをコピーする方法
  2. https://serverfault.com/questions/180853/how-to-copy-file-preserving-directory-path-in-linux
  3. https://stackoverflow.com/questions/1650164/bash-copy-named-files-recursively-preserving-folder-struct

そして、いくつかの他の答えがありますが、正解が得られないようです。

答え1

次のようにコマンドを再作成する必要があります。

cd ~/data; find . -cmin -60 -mmin -60 -type f

相対パスの検索から取得できます。

たぶん良い

find ...  -exec cp -r "{}" ../vee/ \; 

サブディレクトリ構造のファイルコピーが実行されます。

答え2

スイッチを使用できます--parents

cd ~/data; find . -cmin -60 -mmin -60 -type f -exec cp --parents "{}" ~/vee/

~からマニュアルページ:

--parents
use full source file name under DIRECTORY

つまり、パス結果を取得するとき:

./foo1/file1.txt
./foo2/bar2/file2.txt

cp入力ファイルのフルパスが使用され、次のようにターゲットパスに追加されます。

~/vee/./foo1/file1.txt
~/vee/./foo2/bar2/file2.txt

このディレクトリ構造を再作成します。

関連情報