关于Linux命令的问题“find -exec {}”

我试图在颠覆中更新文件。 我需要在makefile中添加一行,以便构build修订版本的代码。 这是我试图在make文件中find的地方。

找 。 -name“* ake *”-exec grep filename {} / dev / null \;

有用。 但是我的问题是:1.什么是“\”; 对于? 如果我改变它,会有错误信息。

2 / dev / null没有改变结果。 我知道这是处理所有“垃圾信息”的设备。 但在这种情况下我还是不太明白。

提前致谢!

\; 指示要由find执行的命令的结束。 \要求停止shell解释; 本身。 从man find

 -exec command ; Execute command; true if 0 status is returned. All following arguments to find are taken to be arguments to the command until an argument consisting of ';' is encountered. 

/dev/null是一个聪明的把戏,花了我一段时间才弄清楚。 如果grep传递了多个文件名,它将在每次匹配之前打印包含文件名。 /dev/null作为一个不包含匹配的空文件,但是让grep认为它总是传递多个文件名。 理查德建议的更明确的选择是使用grep的-H选项:

  -H, --with-filename Print the filename for each match. This is the default when there is more than one file to search.