在目录中找到特定字符串

在目录中找到特定字符串

我想要执行以下操作:

cat *.xml | grep some_string_here

这会告诉我目录中的 xml 文件中是否存在特定字符串。不幸的是,它没有告诉我哪个文件。

我怎样才能做得更好?cat命令没有看到我有一个在输出中添加文件名前缀的开关......

答案1

cat是不必要的(UUOC!) grep通常会告诉您在像这样使用时匹配的行在哪个文件中找到:

   grep some_string_here *.xml

您还可以使用-H开关始终执行以下操作:

   grep -H some_string_here *.xml

答案2

你需要做:

grep some_string_here *.xml

相反,grep 会自动将文件名添加到每个匹配项的前面。

答案3

只需使用 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

只会打印文件名。

答案4

grep some_string_here /dev/null *.xml

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

相关内容