如何使用命令行获取目录中的文件计数?

如何使用命令行获取目录中的文件计数?

我有一个包含大量文件的目录。我没有看到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 测试的行为)

相关内容