找到文件夹中的字符串及其来源文件?

找到文件夹中的字符串及其来源文件?

我正在尝试在 /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 将使搜索不区分大小写(但速度较慢)

相关内容