【Linux 问题】如何统计当前文件夹的实际数目?

先用 ls -la 查看文件夹,没发现有隐藏文件

image.png

ls 手动计算当前目录是 45 个目录,

image.png

而使用网上别人分享的命令却没一个算对的

我使用 ls -l |wc -l,计数为 48,多三个

使用 ls -l | grep "^d" | wc -l,计数为 47,多两个

使用 find . -maxdepth 1 -type d |wc -l,计数为 46,多一个……

所以应该如何使用什么命令呢……

  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    842 引用 • 907 回帖 • 235 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    3063 引用 • 15909 回帖 • 493 关注
被采纳的回答
  • springtwr

    多出的三个分别是总用量(total)父目录(..)当前目录(.)

    你用的第一条命令就是三个全多出来了,第二条命令多了父目录(..)当前目录(.),因为 ^d总用量(total) 过滤掉了,第三条则是多了一个当前目录(.),因为 find . 在不加其它过滤参数的情况下会将当前目录(.) 纳入结果中。

    如果只统计当前目录下的所有目录的数量(不包含子目录),可以使用

    ll -A|grep "^d"|wc -l
    

    llls -l 的别名,部分 Linux 发行版会默认添加该别名,没有的需自行使用 alias 添加或直接用 ls -l 代替。-A 参数与 -a 参数相比会在显示结果中将父目录(..)当前目录(.) 过滤掉。

    如果要统计目录下所有文件夹和文件的数量(不包含子目录),可以用

    ll -A|grep "^[-a-s]"|wc -l
    

    Linux 文件系统中的文件类型字母表示一般都在 a~s 之间外加普通文件(-),这条命令基本能满足需求,但在一些 Unix 系统里面这条命令的统计结果可能会出错,比如在 Solaris 系统里面就有用大写字母表示的文件类型,会导致统计数量比实际数量要少。

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • Achuan-2
    订阅者 作者

    额,原来是有人干了坏事

    ls 变成 ls -a 了

    image.png

    1 操作
    Achuan-2 在 2021-09-20 00:00:38 更新了该回帖
  • springtwr 1 评论

    多出的三个分别是总用量(total)父目录(..)当前目录(.)

    你用的第一条命令就是三个全多出来了,第二条命令多了父目录(..)当前目录(.),因为 ^d总用量(total) 过滤掉了,第三条则是多了一个当前目录(.),因为 find . 在不加其它过滤参数的情况下会将当前目录(.) 纳入结果中。

    如果只统计当前目录下的所有目录的数量(不包含子目录),可以使用

    ll -A|grep "^d"|wc -l
    

    llls -l 的别名,部分 Linux 发行版会默认添加该别名,没有的需自行使用 alias 添加或直接用 ls -l 代替。-A 参数与 -a 参数相比会在显示结果中将父目录(..)当前目录(.) 过滤掉。

    如果要统计目录下所有文件夹和文件的数量(不包含子目录),可以用

    ll -A|grep "^[-a-s]"|wc -l
    

    Linux 文件系统中的文件类型字母表示一般都在 a~s 之间外加普通文件(-),这条命令基本能满足需求,但在一些 Unix 系统里面这条命令的统计结果可能会出错,比如在 Solaris 系统里面就有用大写字母表示的文件类型,会导致统计数量比实际数量要少。

    3 操作
    springtwr 在 2021-09-19 21:48:26 更新了该回帖
    springtwr 在 2021-09-19 21:41:18 更新了该回帖
    springtwr 在 2021-09-19 20:47:32 更新了该回帖
    太强了,感谢!
    Achuan-2