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

use*_*029 89 grep scripting

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

grep -E 'fatal|error|critical|failure|warning|' /path_to_file
Run Code Online (Sandbox Code Playgroud)

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

Jig*_*dhi 84

grep -E 'fatal|error|critical|failure|warning|' *.log
Run Code Online (Sandbox Code Playgroud)

  • @Jorn,你真的应该问一个新问题,但使用 `find 。-type f -exec grep -E 'fatal|error|critical|failure|warning' {} +` (7认同)

jhe*_*ran 32

你可以使用这样的东西:

find . -name "*.log" | xargs grep -E 'fatal|error|critical|failure|warning|'
Run Code Online (Sandbox Code Playgroud)

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

  • 当您可以只使用 `find 时,为什么要费心使用 `xargs` 和 [文件名中的空格严重损坏](http://unix.stackexchange.com/a/22231/135943) 的可能性。-name '*.log' -exec grep -E 'fatal|error|critical|failure|warning' {} +`? (3认同)

fli*_*fly 27

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

grep -E 'fatal|error|critical|failure|warning' file1.log file2.log 
Run Code Online (Sandbox Code Playgroud)

  • 这是我阅读问题标题时所期望的。 (4认同)

小智 6

如果您需要对无法通过正则表达式检索的任意文件名集进行 grep:

grep -E 'fatal|error|critical|failure|warning|' `cat<<FIN
> file1
> file2
> ...
> filen
> FIN`
Run Code Online (Sandbox Code Playgroud)

一个接一个地粘贴文件名有什么好处?您可以在文本文件上编译文件名列表,然后将其粘贴。