【发布时间】:2016-04-03 23:31:01
【问题描述】:
我想在我的 Linux 上执行一个命令(例如“find”)来列出在过去 N 分钟内内容被修改的所有目录。
例如,我有一个目录“/sites”,其中至少包含 300k 个文件/子目录。我需要运行一个非常快速且经过优化的命令,列出在过去 N 分钟内修改过的文件的目录。
下面的命令列出了所有在最后一分钟修改过的文件(这很棒),但至少需要 3 分钟才能运行:
find /sites/ -type f -mmin -1
下面这个命令要快得多,不超过5秒!但由于某种原因,结果不一致,因为该命令没有列出所有在其中更改了文件的目录。有些目录不见了,我不知道为什么。
find /sites/ -type d -mmin -1
我做错了吗?
【问题讨论】:
-
如果有一个优化的内部命令会很好......我认为在 ext3 中更新文件时,上面的所有目录也会更改修改日期......跨度>
-
我相信我的最后一条评论非常错误并删除了它(刚刚使用
ls -alh进行了测试).. 如果您为每个顶级目录分别运行 find 会发生什么,例如类似的东西,for i in /sites/; do find $i -type d -mmin -1; done;同样的结果? -
另外,在您运行 find 命令和检查目录内容之间,目录是否有文件更改?
-
@Clayton 我到服务器后会测试你的代码,好吗?但是我在更改任何文件后执行了我的“查找”代码方式,因此应该打印目录。
标签: php linux apache centos server