我有一个包含大量文件的目录。我没有看到ls
提供计数的开关。是否有一些命令行魔法可以获取文件计数?
答案1
使用“文件”的广义定义
ls | wc -l
(请注意,它不计算隐藏文件,并假设文件名不包含换行符)。
要包含隐藏文件(除了.
和..
)并避免换行符问题,规范的方法是:
find . ! -name . -prune -print | grep -c /
或者递归地:
find .//. ! -name . -print | grep -c //
答案2
对于文件的狭义定义:
find . -maxdepth 1 -type f | wc -l
答案3
我发现du --inodes
很有用,但我不确定du
它需要哪个版本。它应该比使用find
和 的替代方法快得多wc
。
在 Ubuntu 17.10 上,以下内容有效:
du --inodes # all files and subdirectories
du --inodes -s # summary
du --inodes -d 2 # depth 2 at most
与 结合使用可按| sort -nr
包含 inode 的数量降序排序。
答案4
ls
使用/wc
对最完整的答案可能是
ls -Aq | wc -l
如果你想计算点文件的数量,并且
ls -q | wc -l
否则。
-A
是对点文件进行计数,但省略.
和..
。-q
使用ls
替换非图形字符,特别是换行符,?
使每个文件输出 1 行
要从 in 终端获取一行输出ls
(即不通过管道将其输入wc
),-1
必须添加选项。
ls
(使用 coreutils 8.23 测试的行为)