关于Linux命令的问题;查找-exec{}";

关于Linux命令的问题;查找-exec{}";,linux,bash,Linux,Bash,我试图在subversion中更新一个文件。我需要在makefile中添加一行,以构建代码的修订版本。这是我试图在make文件中查找位置的命令 找到-名称“*ake*”-exec grep filename{}/dev/null\ 它起作用了。但我的问题是: 1.“\;”是什么意思?如果我更改它,将出现错误消息 2/dev/null没有更改结果。我知道这是处理所有“垃圾信息”的设备。但在这种情况下我还是不太明白 提前谢谢 这个\表示要由find执行的命令结束。需要使用\停止shell解释本身。从

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

找到-名称“*ake*”-exec grep filename{}/dev/null\

它起作用了。但我的问题是: 1.“\;”是什么意思?如果我更改它,将出现错误消息

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


提前谢谢

这个
\表示要由
find
执行的命令结束。需要使用
\
停止shell解释
本身。从
人工查找

-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认为它总是传递多个文件名。richard建议的一个更明确的替代方案是使用grep的
-H
选项:

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

\表示要由
find
执行的命令结束。需要使用
\
停止shell解释
本身。从
人工查找

-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认为它总是传递多个文件名。richard建议的一个更明确的替代方案是使用grep的
-H
选项:

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

我不确定/dev/null在这里是否有角色-这应该扩展为简单的“grep filename{current_file_path}”,不需要/dev/null。这让我感到困惑。也许创建者认为
find
充当了globbing,并且无论
find
是否找到任何东西,都会运行
exec
,为
grep
提供至少一个要搜索的文件?无论如何,我看不出它存在的理由。
find-顺便说一句,exec grep-e filename/dev/null{}+
会更有效率;
\变体在这个用例中没有真正意义。@Wrikken,
grep
的某些版本在只有一个输入文件的情况下与两个或更多输入文件的情况下表现不同。”。
/dev/null
确保两个或两个以上的案例始终是使用中的案例。我不确定/dev/null在这里是否有角色-这应该扩展为简单的“grep filename{current_file_path}”,不需要/dev/null。这让我感到困惑。也许创建者认为
find
充当了globbing,并且无论
find
是否找到任何东西,都会运行
exec
,为
grep
提供至少一个要搜索的文件?无论如何,我看不出它存在的理由。
find-顺便说一句,exec grep-e filename/dev/null{}+
会更有效率;
\变体在这个用例中没有真正意义。@Wrikken,
grep
的某些版本在只有一个输入文件的情况下与两个或更多输入文件的情况下表现不同。”。
/dev/null
确保两个或两个以上的case始终是使用中的一个。因此可以使用'grep-H'是的,事实上我想说这将是一种更清楚、因此更好的方法。值得注意的是,
-exec command{}+
是另一种POSIX标准用法,当命令是
grep
时完全有效,而且与每个结果运行grep命令相比,效率也要高得多。我明白了。这就像“grep-H”和“grep-H”一样,所以可以使用“grep-H”是的,事实上,我想说这将是一种更清晰、因此更好的方法。值得注意的是,
-exec command{}+
是另一种POSIX标准用法,当命令是
grep
时完全有效,而且与每个结果运行grep命令相比,效率也要高得多。我明白了。就像“grep-H”对“grep-H”