linux - 使用 "grep"和 "find"命令根据访问时间查找文件

标签 linux

我的目标是找到所有扩展名为 .log 的文本文件,这些文件的最后一次访问时间是在 24 小时前,并且包含所需的文本。

这是我已经尝试过的:

find / *.log -mtime +1 -print | grep "next" *.log

但这不起作用。

Question is: how can I reach the goal I have described above?Maybe some ways to modify my find expression?

最佳答案

您的命令的问题在于您正在 find 命令的输出上运行 grep - 这意味着您正在文件名上运行它,而不是内容(实际上,由于最后有 *.log ,所以您在所有 *.log 文件上运行它,完全忽略 find 命令找到的内容)。另外,您需要 -name 才能仅过滤 .log 文件。

您可以使用 find 的 -exec 标志对符合您的查找条件的每个文件执行命令:

find / -name "*.log" -mtime +1 -exec grep 'next' \{};

关于linux - 使用 "grep"和 "find"命令根据访问时间查找文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32923678/

相关文章:

regex - 我可以用 sed 获取匹配后下一行的长度吗?

linux - 如何重新连接到在 screen 中使用 ctrl-a x 停止的进程?

node.js - 使用 Nodejs 更改 bash 终端的当前工作目录

Python匿名管道设置超时

linux - 用于在特定时间为特定字符串跟踪日志文件的 Shell 函数

linux - Ubuntu 服务器 VNC 连接

linux - 如何创建每个用户的使用情况报告?

mysql - magento 的服务器解决方案

linux - 差异工具告诉我有一个我看不到的差异

linux - 循环脚本,重定向到文件