扫描目录并获取最新匹配的创建时间

发布于 2024-11-06 06:08:15 字数 236 浏览 1 评论 0原文

在 Linux 下,我可以使用 opendir 打开目录,然后使用 readdir 来获取文件名。

我一直在尝试使用 scandir 并认为“太好了,我可以通过传入自定义过滤器来搜索此目录中我想要的文件”,并使用自定义排序进行排序,我想按创建日期进行排序。但后来我意识到当前的结构是多么有限。它只包含最少的信息。

这是唯一可能的 API 吗?即我是否必须统计每个文件才能获取其大小以进行排序?这就是 ls -t 的工作原理吗?

Under Linux I can open a directory using opendir and then use readdir to get the filenames.

I have been experimenting with scandir and thought "great I can search for the files in this directory that I want by passing in a custom filter", and sort using a custom sort where I want to sort by creation date. But then I realised how limited the dirent structure is. It contains only minimal information.

Is this the only API possible? i.e. do I have to stat every single file to get it's size for sorting? Is this how ls -t works?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

倾城花音 2024-11-13 06:08:15

这确实是 ls -t 的工作原理,正如“strace ls -t”将证实的那样。从历史上看,UNIX 目录只是一个包含文件名列表的特殊文件,应用程序应该自己读取和解析该“文件”。当然,当开发出扩展文件名固定长度的新文件系统时,这会导致问题,因此开发了 opendir/readdir/filledir 接口来抽象文件系统目录实现。但目录列表中直接可用内容的限制仍然存在。

That is, indeed, how ls -t works, as 'strace ls -t' will confirm. Historically, a UNIX directory was just a special file containing a list of file names, and applications were expected to read and parse that "file" themselves. Naturally, that led to problems when newer file systems were developed that expanded the fixed length of file names, so the opendir/readdir/closedir interface was developed to abstract away the filesystem directory implementation. But the limitation on what is directly available in a directory listing remains.

漆黑的白昼 2024-11-13 06:08:15

POSIX 没有任何存储创建时间的工具,更不用说检索它了。

POSIX does not have any facility for storing creation time, much less retrieving it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文