find -exec cpに関する問題

find -exec cpに関する問題

次の例を考えてみましょう。

touch test0
touch timestamp
touch test1
sudo find /var/www/import -iname 'test*' -newer timestamp -exec cp {} new \;

実際にtest1ファイルをコピーしますが、次のメッセージを返します。

cp: `/var/www/import/new/test1' and `new/test1' are the same file

私は何が間違っていましたか?

2番目の質問です。ファイルを単一の「パッケージ」にコピーするためにこのコマンドに「+」を使用できますか?何千ものファイルがあります!

ベストアンサー1

私は何が間違っていましたか?

それは問題ではありません。findコピーされたファイルが見つかり、new再度コピーしようとすると警告メッセージが表示されます。

ファイルが単一の「パッケージ」にコピーされるように、このコマンドに「+」を使用できますか?何千ものファイルがあります!

はい、しかし、次のようにコマンドを変更する必要があります。

find /var/www/import -iname 'test*' -newer timestamp -exec cp -t new {} +

なぜなら{}、この場合はexecステートメントの最後になければならないからです。

おすすめ記事