find -exec cp 的问题

Mik*_*ike 5 shell find cp

考虑这个例子:

touch test0
touch timestamp
touch test1
sudo find /var/www/import -iname 'test*' -newer timestamp -exec cp {} new \;
Run Code Online (Sandbox Code Playgroud)

它实际上复制文件 test1,但它返回消息:

touch test0
touch timestamp
touch test1
sudo find /var/www/import -iname 'test*' -newer timestamp -exec cp {} new \;
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

第二个问题,我可以在这个命令中使用“+”,以便将文件复制到一个“包”中吗?有成千上万的文件!

rus*_*ush 12

我究竟做错了什么?

没关系。find找到已复制的文件new并尝试再次复制它们,因此会显示警告消息。

我可以在这个命令中使用“+”,以便将文件复制到一个“包”中吗?有成千上万的文件!

是的,但您需要以这种方式修改您的命令:

find /var/www/import -iname 'test*' -newer timestamp -exec cp -t new {} +
Run Code Online (Sandbox Code Playgroud)

因为{}在这种情况下必须在 exec 语句的末尾。