![包含数百万个文件的目录:列出文件的内存高效方法(linux / ext4)](https://linux22.com/image/1604714/%E5%8C%85%E5%90%AB%E6%95%B0%E7%99%BE%E4%B8%87%E4%B8%AA%E6%96%87%E4%BB%B6%E7%9A%84%E7%9B%AE%E5%BD%95%EF%BC%9A%E5%88%97%E5%87%BA%E6%96%87%E4%BB%B6%E7%9A%84%E5%86%85%E5%AD%98%E9%AB%98%E6%95%88%E6%96%B9%E6%B3%95%EF%BC%88linux%20%2F%20ext4%EF%BC%89.png)
不幸的是,我有一个应用程序,将数百万个文件放在一个平面目录中(没有任何子目录)
如果我在给定的目录上执行 ls 或 find,那么 ls 或 find 将消耗几 GB 的 RAM。
我猜测,原因是 ls 和 find 将一个目录的所有文件读入 RAM。
我的问题是。
有没有什么方法可以列出该目录的文件而不消耗太多内存?
任何解决方案(特殊选项/不同命令/要编译的 C 程序/特殊的 python 模块)都会很有趣。
答案1
有:
该ls
命令不仅读取文件名,还会fstat()
读取每个文件。如果使用序列,opendir() / readdir() / close()
效果会更好。
除此之外,列出目录所需的资源也是文件系统的功能:XFS
使用比少得多的资源ext4
。