我正在尝试在 /var/log 目录中查找一些关键字,因此使用
cd /var/log cat * | grep关键词
我发现该字符串位于该目录中,并查看了它所在的行,但不知道它来自哪个文件。我如何找到该字符串并查看它来自的文件?
答案1
grep
可以将文件名作为参数。
cd /var/log
grep keyword *
如果您一次从多个文件中进行 grep,则该行来源的文件名将与找到的行一起打印。
如果您只向 grep 提供 1 个文件名,但是无论如何都想在文件上显示该名称,请将该-H
选项传递给 grep ——如果您在命令行上使用通配符(例如*.txt
)并且不知道将搜索多少个文件,则此选项很有用。
如果您还想显示行号,可以选择该-n
选项。
答案2
find /var/log -type f | xargs grep -H
或者
find /var/log -type f -name \*log | xargs grep -H
或(比 xargs 慢得多)
find /var/log -type f -exec grep -H {} \;
另外,grep -i 将使搜索不区分大小写(但速度较慢)