使用“grep”和“find”命令根据访问时间查找文件

时间:2015-10-03 14:28:57

标签: linux

我的目标是查找扩展名为.log的所有文本文件,这些文件的最后访问时间超过24小时,并包含所需的文本。

这是我已经尝试过的:

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

但这不起作用。

  

问题是:我如何达到上述目标?可能有一些方法可以修改我的find表达式?

2 个答案:

答案 0 :(得分:0)

尝试xargs

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

但是,请注意find手册中有关-atime的arg的内容,该内容也适用于-mtime。也就是说,您指定的mtime可能无法获得您想要的时间段。

  

当找到文件最后24小时前的数据时   访问时,忽略任何小数部分,所以匹配-atime + 1,a   文件必须至少两天天才被访问过。

答案 1 :(得分:0)

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

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

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