Linux - 如何在不使用 find 命令的情况下查找过去 12 小时内更改的文件

标签 linux bash

我需要查找过去 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 才能对它们进行排序。

关于Linux - 如何在不使用 find 命令的情况下查找过去 12 小时内更改的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30924504/

相关文章:

python - 如何将 linux 命令的输出通过管道传输到 python 脚本?

bash - 使用标准 Linux 命令行工具修改二进制文件中的字节

linux - 如何在各种单独的文件中分隔与特定模式匹配的文件名和内容

Linux sed 不替换逗号

linux - 如何比较文本文件并删除重复项(Linux 终端命令)

Python 多处理 linux windows 区别

linux - Debian 设备描述符读取 64 错误 71

linux - 从 OS X 交叉编译到 Linux

linux - 在 linux 上使用私有(private) C++ 运行时库

linux - bash中##和%%的功能是什么