如何同时 grep 查找相同的字符串但多个文件?

如何同时 grep 查找相同的字符串但多个文件?

我有一组需要查看的日志文件,并且我想立即搜索同一文件上的特定字符串这可能吗?目前我正在使用

grep -E 'fatal|error|critical|failure|warning|' /path_to_file

如何使用它并同时搜索多个文件的字符串?如果这是需要编写脚本的事情,有人可以提供一个简单的脚本来执行此操作吗?

答案1

grep -E 'fatal|error|critical|failure|warning|' *.log

答案2

如果更简单,您可以逐个指定每个文件。

grep -E 'fatal|error|critical|failure|warning' file1.log file2.log 

答案3

你可以使用这样的东西:

find . -name "*.log" | xargs grep -E 'fatal|error|critical|failure|warning|'

这将找到每个具有.log扩展名的文件并应用该grep命令。

答案4

吉加尔·甘地的回答演示星号通配符的使用。还有更多,你可以看到它们这里或者通过运行man 7 glob.

我发现有用的其中之一是与 . 匹配的范围[]。由于我工作的系统会生成按顺序编号的日志文件,例如product.log.1 product.log.2 ... product.log.200,使用单个命令来 grep 3 或 4 个连续文件(但不能更多)是很方便的。所以这

grep 'whatever' product.log.[5-7]

将 grep 查找所有以 Product.log 结尾的文件。 5、6 或 7。通配符不必位于末尾,因此萤火虫的回答可以简化为

grep -E 'fatal|error|critical|failure|warning' file[1,2].log

另请注意,这些通配符也可以在其他命令中使用,例如cp

相关内容