获取目录中过去30天内修改的所有文件

时间:2014-04-14 20:56:41

标签: find centos

CentOS的。需要查找过去30天内修改过的文件,看看是否有任何文件被恶意软件感染。

我试过了:

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

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

1 个答案:

答案 0 :(得分:83)

一些问题

  • 您不会将其限制为文件,因此当找到匹配的目录时,它会列出其中的每个文件。
  • 如果没有>之类的内容,您无法在-exec中使用bash -c '... > ...'。虽然>会覆盖该文件,但您仍希望重定向整个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而运行得更快。根据{{​​1}}的版本,您也可以使用find,其格式与上述类似。