我需要查找过去12小时内修改过的文件。但是,目录非常大,因此使用通常的find命令会花费太长时间。
任何人都有任何想法更快地做到这一点?我正在考虑列出文件,然后使用head获取前20名,然后仅检查这些文件。但我不确定。
任何帮助?
更新:感谢所选答案的帮助,我们发现您实际上可以在不使用find命令的情况下找到文件。诀窍是为文件名加时间戳,然后使用以下代码获取最新的文件名:
ls -1 /directory/files*.txt | sort -nr | head -1
答案 0 :(得分:0)
文件修改时间存储在其inode中。因此,您使用的任何命令都必须读取该目录中所有文件的inode。您可以创建自己的脚本来检查mtime,但它不会更快。
列出目录内容(仅限文件名)非常快,尝试使用ls -1
( ls减去一个)。但是使用mtime等文件属性列出它很慢:{{1} }( ls减去小L )。
目录中的文件列表由文件系统以“随机”顺序读取(顺序取决于很多东西,但是是静态的)。所以你不能使用像X号文件后停止的东西。 ls -l
列出了按mtime排序的文件,但它必须读取所有文件的mtime才能对它们进行排序。