首页 > 解决方案 > sh,读取大量日志文件并 grep 一些文本并打印所有出现的文件名和行号

问题描述

我觉得应该在某个地方回答这个问题,但我找不到一个好的答案。

我的要求是我需要在 Unix 服务器上搜索过去 3 个月的日志(几千个文件)以查找所有异常。

所以我需要一个命令(或脚本),它应该打印、记录文件名、行号、异常第一行,然后将该输出 > 路由到一个新文件。

我想要一些可以在后台运行并在该过程完成后检查的东西。

然后,我可以分析该文件中的所有常见异常,并可以专注于最常发生的异常。

谢谢您的帮助。

标签: shellunixcommand-linecommand

解决方案


我想这可能对你有帮助

要删除旧文件,您可以直接使用 find 如下所示,

find <PATH> -type f -mtime -90 -exec rm {} \;

请在运行命令之前确认文件夹,因为它也有rm

现在诀窍是 find 的 mtime 选项,

mtime 是修改时间,上面的命令会返回最近 90 天内修改的所有文件,(如果你给 +90 它将返回所有修改超过 90 天的文件)。

如果您想 grep 使用 find 并将其通过管道传递给 grep,如下所示,

find <PATH> -type f -mtime -90 | xargs grep -in <PATTERN> > output.log

推荐阅读