获取目录中最近 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
。
+30
是 older
超过 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 天内修改的所有文件的主要内容,如果未能解决你的问题,请参考以下文章