我想要执行以下操作:
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 文件。