从 find 命令 grep on exec 的最佳方法是什么?

Which is best way to grep on exec from find command?

我很好奇这些语句中的哪一个会占用最多的资源。

我有时希望标准是 1000 个文件,并希望确保我实施“最安全”的执行。文件本身会相对较小,但文件的数量可能会非常大。

两种选择:

sudo find /home/users -name '*.sh' -type f -exec grep -n 'rm.*tmp.*7z$' {} \+
sudo find /home/users -name '*.sh' -type f -exec grep -Hn 'rm.*tmp.*7z$' {} \;

如您所见,唯一的区别是我应该使用 + 还是 ;

第一个比第二个少 运行 grep 次,后者将为每个文件启动一个实例。 grep 的启动时间非常快,因此可能不会有太大的明显改进,但第一个会更有效率,第二个会占用更多资源。

(您也需要将 -H 添加到第一个 grep 的选项中,以防万一它在某个时候使用单个文件名参数获得 运行。)