包含数百万个文件的目录:列出文件的内存高效方法(linux / ext4)

包含数百万个文件的目录:列出文件的内存高效方法(linux / ext4)

不幸的是,我有一个应用程序,将数百万个文件放在一个平面目录中(没有任何子目录)

如果我在给定的目录上执行 ls 或 find,那么 ls 或 find 将消耗几 GB 的 RAM。

我猜测,原因是 ls 和 find 将一个目录的所有文件读入 RAM。

我的问题是。

有没有什么方法可以列出该目录的文件而不消耗太多内存?

任何解决方案(特殊选项/不同命令/要编译的 C 程序/特殊的 python 模块)都会很有趣。

答案1

有:

ls命令不仅读取文件名,还会fstat()读取每个文件。如果使用序列,opendir() / readdir() / close()效果会更好。

除此之外,列出目录所需的资源也是文件系统的功能:XFS使用比少得多的资源ext4

相关内容