中央操作系统。需要查找最近 30 天内修改过的文件,以查看是否有任何文件感染了恶意软件。
我试过这个:
root@server [/home/someuser/public_html/]# find . -mtime +30
-exec ls -l {} > last30days.txt \;
但不是最近 30 天,它似乎找到了一切。 22,000 个文件。
最佳答案
几个问题
- 您并未将其限制为文件,因此当它找到匹配的目录时,它会列出其中的每个文件。
- 如果没有像
bash -c '... > ...'
这样的东西,你就不能在-exec
中使用>
。尽管>
会覆盖文件,所以您还是希望重定向整个find
而不是每个-exec
。 +30
早于
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
,其格式与上述类似。
关于find - 获取目录中最近 30 天内修改的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23070245/