如何在Linux中生成文本报告?

如何在Linux中生成文本报告?

我有一个命令用来查找*.xml服务器上的所有文件。我在用着:

find -type f -exec grep -il "xml" {} \;

这很棒,但是服务器上可能有一千个这样的文件,并且我的窗口被填满了。

我希望能够生成一份报告并将其保存在服务器上的某个位置,甚至通过电子邮件发送给我。

我还想指定在生成此报告时仅查看最近 5 天的情况。

答案1

让我们首先将文件保存在某个地方。

听你的命令:

find -type f -exec grep -il "xml" {} \;

并通读:shell 的控制和重定向运算符是什么?到它说的地方:

>:将命令的输出定向到文件中。

使您的命令类似于:

find -type f -exec grep -il "xml" {} \; > /tmp/report.txt

我将借此机会建议对您当前的find命令进行一些调整:

  1. 可能是个人偏好(或我的遗留记忆),但我喜欢指定 的起始目录find,如下所示:

    find / -type f ....

这样无论您从哪里启动命令或脚本,它总是会产生预期的结果。

  1. 您的find命令不是搜索“*.xml”文件,而是搜索包含(不区分大小写)字符串“xml”的文件。如果您想要内容搜索,请停止阅读本段。如果您确实想查找其中包含“xml”的文件文件名,然后查找类似以下内容:find / -type f -iname '*xml*'-- whereiname告诉find匹配包含(不区分大小写)“xml”的文件名。如果您只关心“xml”位于结尾文件名的,然后使用find / -type f -iname '*xml'... -iname '*.xml,如果您希望在 xml 之前添加句点。

2a.如果你想要搜索文件的内容,请考虑将一般情况更改grep为告诉 grep 您正在搜索固定字符串的情况:... grep -Fil xml ...以加快速度。

  1. 要告诉 find 仅报告过去 5 天内修改过的文件,请使用-mtime -5.

  2. 由于您将 Q 标记为 Linux,因此我假设您已找到 GNU(man find并在描述中查找“GNU”进行确认)。在这种情况下,可以find通过使用以下语法告诉每个 exec 传递多个文件来 加快进程速度:find / -type f -mtime -5 -exec grep -Fil xml {} + > /tmp/report.txt

相关内容