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

时间:2014-02-10 22:52:48

标签: linux bash

我尝试在subversion中更新文件。我需要在makefile中添加一行,以便构建修改后的代码版本。这是我试图在make文件中找到该位置的命令。

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

有效。但我的问题是:  1.什么是“\;”对于?如果我更改它,将会出现错误消息。

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

提前致谢!

1 个答案:

答案 0 :(得分:4)

\;表示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.