不幸的是,我有一个应用程序,将数百万个文件放在一个平面目录中(没有任何子目录)
如果我在给定的目录上执行 ls 或 find,那么 ls 或 find 将消耗几 GB 的 RAM。
我猜测,原因是 ls 和 find 将一个目录的所有文件读入 RAM。
我的问题是。
有没有什么方法可以列出该目录的文件而不消耗太多内存?
任何解决方案(特殊选项/不同命令/要编译的 C 程序/特殊的 python 模块)都会很有趣。
答案1
有:
该ls
命令不仅读取文件名,还会fstat()
读取每个文件。如果使用序列,opendir() / readdir() / close()
效果会更好。
除此之外,列出目录所需的资源也是文件系统的功能:XFS
使用比少得多的资源ext4
。