我需要查找过去 12 小时内修改的文件。但是,该目录非常大,因此使用通常的 find 命令需要很长时间。
有人有任何想法可以更快地做到这一点吗?我正在考虑列出文件,然后使用 head 获取前 20 个文件,然后仅检查这些文件。但我不确定。
有什么帮助吗?
更新:感谢所选答案的帮助,我们发现您实际上可以在不使用 find 命令的情况下找到文件。诀窍是对文件名添加时间戳,然后使用以下代码获取最新的文件名:
ls -1/目录/文件*.txt |排序-nr |头-1
文件修改时间存储在其 inode 中。因此,无论您使用什么命令都必须读取该目录中所有文件的 inode 。您可以编写自己的脚本来检查 mtime,但它不会更快。
列出目录内容(仅文件名)确实很快,请尝试使用 ls -1
(ls 减一)。但是使用诸如 mtime 之类的文件属性列出它则很慢:ls -l
(ls 减去小 L)。
目录中的文件列表由文件系统以“随机”顺序读取(顺序取决于很多因素,但是静态的)。因此,您不能使用诸如在 X 个文件后停止之类的方法。 ls -t
列出按 mtime 排序的文件,但它必须读取所有文件的 mtime 才能对它们进行排序。
我是一名优秀的程序员,十分优秀!