linux - 查找目录中的文件数

标签 linux file shell directory counting

在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/

相关文章:

linux - Intel Atom 主板上的 spidev Linux 驱动程序

python - 如何在 json 文档中的单行 shell 脚本中制作一个大的 shell 脚本?

java - 将文件格式与我的程序关联(Java)

c++ - 基于文件的输入来定义图形变量

file - 查找目录中的重复文件

java - 列出多个jar文件的内容

bash - 将 IFS 设置为 $'\n' 和 $'\n' 之间的区别

c++ - 如何在shell脚本中调用c++程序

linux - 第一个变量被 shell 脚本中的第二个变量覆盖

linux - 预设字典是否仅对前 32 K 字节的数据有用?