我的目标是查找扩展名为.log
的所有文本文件,这些文件的最后访问时间超过24小时,并包含所需的文本。
这是我已经尝试过的:
find / *.log -mtime +1 -print | grep "next" *.log
但这不起作用。
问题是:我如何达到上述目标?可能有一些方法可以修改我的
find
表达式?
答案 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' \{};