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

b0zn9rqh  于 2022-11-07  发布在  其他
关注(0)|答案(2)|浏览(188)

CentOS。需要查找在过去30天内修改过的文件,以查看其中是否有任何文件感染了恶意软件。
我试过这个:

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

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

gstyhher

gstyhher1#

有几个问题

  • 您没有将其限制为文件,因此当它找到匹配的目录时,它将列出其中的每个文件。
  • 如果没有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

这将以“permissions owner group time date filename”的格式列出文件。在不需要执行任何复杂操作的情况下,-printf通常比-exec更可取。这是因为它运行得更快,因为不必为每个-exec执行子shell。根据find的版本,您也可以使用-ls,其格式与上面类似。

相关问题