在Linux中有没有什么方法可以在O(1)(独立于文件数)的情况下计算目录(即直接子目录)中的文件数而不必先列出目录?如果不是 O(1),是否有合理有效的方法?
我正在寻找 ls | 的替代品wc -l
.
最佳答案
readdir 并不像您想象的那么昂贵。诀窍是避免统计每个文件,并(可选地)对 ls 的输出进行排序。
/bin/ls -1U | wc -l
避免在您的 shell 中使用别名,不对输出进行排序,并且每行列出 1 个文件(将输出通过管道传输到 wc 时并非绝对必要)。
最初的问题可以改写为“目录的数据结构是否存储条目数的计数?”,答案是否定的。没有比 readdir(2)/getdents(2) 更有效的文件计数方法了。
关于linux - 查找目录中的文件数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3702104/