我想在我的Linux上执行一个命令(比如“查找”),列出在最后N分钟内修改了内容的所有目录。
例如,我有一个目录“/ sites”,其中包含至少300k个文件/子目录。我需要运行一个非常快速且优化的命令,该命令列出了包含在最后N分钟内修改过的文件的目录。
下面的命令列出了最后一分钟修改过的所有文件(这很棒),但至少需要3分钟才能运行:
find /sites/ -type f -mmin -1
下面这个命令要快得多,不超过5秒!但由于某种原因,结果不一致,因为此命令不会列出其中已更改文件的所有目录。有些目录丢失了,我不知道为什么。
find /sites/ -type d -mmin -1
我做错了吗?
答案 0 :(得分:0)
下面这个命令要快得多,不超过5秒! 但由于某种原因,结果不一致导致此命令 没有列出其中有文件更改的所有目录。 有些目录丢失了,我不知道为什么。
find /sites/ -type d -mmin -1
这只是因为此命令只查找已更改的目录,并且在目录中更改目录中预先存在的文件的内容不需要更改目录的内容(文件名和inode编号)。登记/>
因此,要查找包含已修改文件的目录,检查单个文件的修改日期是必不可少的,但是我们可以通过修改后继续到下一个目录来缩短流程文件在当前文件中找到;遗憾的是,find
:
find /sites/ -type d -exec find {} -mindepth 1 -maxdepth 1 -mmin -1 -ls -quit \;
(这列出了每个目录中最近修改过的第一个条目,如果有的话。)
如果这还不够快,那么就会有一个专门的小C程序。