我想要做到以下几点:
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文件。