【问题标题】:Get all files modified in last 30 days in a directory获取目录中最近 30 天内修改的所有文件
【发布时间】: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 个文件。

【问题讨论】:

    标签: find centos


    【解决方案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 {} \;,它将在当前目录中进行搜索
    • 迄今为止最好的答案。
    猜你喜欢
    • 2016-07-03
    • 2022-01-22
    • 1970-01-01
    • 2016-08-20
    • 2012-04-16
    • 2022-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多