在目录中find一个特定的string

我想要做到以下几点:

cat *.xml | grep some_string_here

这告诉我一个特定的string是否存在于目录中的xml文件中。 不幸的是,它不告诉我哪个文件。

我怎么能做得更好? cat命令没有看到我有一个开关,添加一个文件名前缀的输出…

cat是不必要的(UUOC!) grep通常会告诉你哪个文件中find匹配的行,如下所示:

  grep some_string_here *.xml 

你也可以使用-H开关总是这样:

  grep -H some_string_here *.xml 

你需要做的是:

 grep some_string_here *.xml 

相反,然后grep会自动预先给每个匹配的文件名。

只要使用grep

grep some_string *.xml

输出将是类似的东西

 a.xml: string containing some_string xyzzy.xml:some_string in a different line 

如果一个文件包含some_string的多个事件,则每个事件都将被打印。 如果你使用

 grep -l some_string *.xml 

只有文件名将被打印。

 grep some_string_here /dev/null *.xml 

…与上面的其他build议相比是一个小的改进,因为它确保包含匹配的文件的名称始终打印,即使当前目录只包含一个XML文件。