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

But*_*kus 34 centos find

CentOS的.需要查找过去30天内修改过的文件,以查看是否其中任何文件已被恶意软件感染.

我试过这个:

root@server [/home/someuser/public_html/]# find . -mtime +30
 -exec ls -l {} > last30days.txt \;
Run Code Online (Sandbox Code Playgroud)

但与过去30天相比,它似乎已经找到了一切.22,000个文件.

Rei*_*ase 97

几个问题

  • 您不是将其限制为文件,因此当它找到匹配的目录时,它将列出其中的每个文件.
  • 不能使用>-exec没有类似的东西bash -c '... > ...'.虽然>会覆盖文件,但你想要重定向整个find而不是每个-exec.
  • +30older超过30天,-30就在最近30天进行修改.
  • -exec真的不需要,你可以列出各种-printf选项.

像下面的东西应该工作

find . -type f -mtime -30 -exec ls -l {} \; > last30days.txt
Run Code Online (Sandbox Code Playgroud)

用例子 -printf

find . -type f -mtime -30 -printf "%M %u %g %TR %TD %p\n" > last30days.txt
Run Code Online (Sandbox Code Playgroud)

这将以"权限所有者组时间日期文件名"格式列出文件.-printf通常比-exec你不需要做任何复杂的事情更好.这是因为它不会为每个子shell执行子shell而运行得更快-exec.根据版本的不同find,您也可以使用-ls,其格式与上述类似.

  • @ButtleButkus添加了`-printf`示例. (2认同)