1 つのコマンドでファイルを検索し、存在しないフォルダーにコピーするにはどうすればよいですか?

1 つのコマンドでファイルを検索し、存在しないフォルダーにコピーするにはどうすればよいですか?

例えば:

find /usr -type f -name "*.txt" -exec cp -r {} ~/txts/ \;

既存のディレクトリ txt がある場合は正常に動作します。

私が理解している限りでは -cpにはフラグがありませんこのケースを解決するには、rsync か何か他のものを使用したほうがよいのでしょうか?

答え1

いい質問ですね。これを試してみてください:
まず にcd入ります/usr。これは、 で絶対パス ( など/usr)を使用すると、 に完全なパスが含まれるように findなると思われるためです。{}

find . -type f -a -name "*.txt" -a -exec install -D {} ~/texts/{} \;

このコマンドを実行すると、次のエラー メッセージが表示されました。

検索: './share/doc/google-chrome-stable': 権限が拒否されました

エラー メッセージは、操作全体が失敗したことを意味するのではなく、findディレクトリでコマンドを実行できなかったことを意味します./share/doc/google-chrome-stable
ただし、私の場合は、他のすべてのファイルとそのパスがコピーされ、必要に応じてディレクトリ パスが作成されました。

さらに調査したところ、エラーの原因は

% ls -al --directory ./share/doc/google-chrome-stable 
drwx------ 2 root root 4096 Aug 21 12:45 ./share/doc/google-chrome-stable

関連情報