获取目录中最近 30 天内修改的所有文件

Posted

技术标签:

【中文标题】获取目录中最近 30 天内修改的所有文件【英文标题】:Get all files modified in last 30 days in a directory 【发布时间】:2014-05-29 00:17:37 【问题描述】:

CentOS。需要查找最近 30 天内修改过的文件,以查看其中是否有任何感染了恶意软件。

我试过这个:

root@server [/home/someuser/public_html/]# find . -mtime +30
 -exec ls -l  > last30days.txt \;

但它似乎找到了一切,而不是过去 30 天。 22,000 个文件。

【问题讨论】:

【参考方案1】:

几个问题

您并没有将其限制在文件中,因此当它找到匹配的目录时,它会列出其中的每个文件。 如果没有bash -c '... > ...' 之类的内容,您不能在-exec 中使用>。尽管> 会覆盖文件,但无论如何您都希望重定向整个find 而不是每个-exec+30older 超过 30 天,-30 将在最近 30 天内修改。 -exec 真的不需要,您可以使用各种 -printf 选项列出所有内容。

类似下面的东西应该可以工作

find . -type f -mtime -30 -exec ls -l  \; > last30days.txt

-printf 为例

find . -type f -mtime -30 -printf "%M %u %g %TR %TD %p\n" > last30days.txt

这将以“权限所有者组时间日期文件名”格式列出文件。在您不必做任何复杂的事情的情况下,-printf 通常比-exec 更可取。这是因为不必为每个-exec 执行子shell,它会运行得更快。根据find 的版本,您可能还可以使用-ls,其格式与上述类似。

【讨论】:

我只想创建一个文件,希望我可以在 vim 或 Excel 中查看,看看最近修改的文件是否有异常。我们通常只修改某些文件。如果还有其他文件,则可以告诉我们恶意代码的来源。我从互联网上的某个地方复制了exec 版本。您能否添加一个printf 示例并解释为什么它更好?我想它有更多的格式选项,是吗? @ButtleButkus 添加了-printf 示例。 如果您在查找后添加.,如find . -type f -mtime -30 -exec ls -l \;,它将在当前目录中进行搜索 迄今为止最好的答案。

以上是关于获取目录中最近 30 天内修改的所有文件的主要内容,如果未能解决你的问题,请参考以下文章

Linux查找最近修改的文件

在 USB 密钥上的压缩存档中获取过去 5 天内修改的文件

在 sql asp.net 中获取过去 30 天未登录的用户

获取过去 12 天内过期的所有 expiry_date

python获取国内城市30天内空气质量指数(AQI)

Shell 实例:备份最后一天内所有修改过的文件