在Linux系统中统计文件夹数量,常用find和tree命令实现,find . -type d -maxdepth 1 | wc -l可统计当前目录下一级文件夹数;递归统计所有子文件夹则需移除-maxdepth参数,tree -L 1 | grep -c '^$'也可实现类似功能,但需注意tree需预装,实践中需注意权限问题,避免因无访问权限导致统计中断;若需排除隐藏文件夹,可添加-not -path '*/\.*'参数,这些方法灵活高效,适用于不同场景的文件夹数量统计需求。
在 Linux 系统管理、文件整理或自动化脚本开发中,统计某个目录下有多少个文件夹(目录)是一项常见需求,无论是排查目录结构异常、计算存储层级,还是为后续操作做准备,准确获取文件夹数量都能提供关键信息,本文将介绍几种实用的 Linux 命令方法,帮助您高效统计文件夹数量,并针对不同场景选择最优方案。
核心需求:为什么需要统计文件夹数量?
在深入方法之前,我们先明确统计文件夹数量的典型应用场景:
- 目录结构分析:快速了解某个目录(如
/var/log、用户主目录)的嵌套层级,判断是否存在过深的目录结构影响文件访问效率。 - 存储管理:统计项目目录下的文件夹数量,辅助评估目录复杂度,或为磁盘清理提供依据(如删除空文件夹)。
- 自动化脚本:在编写脚本时,需提前判断目标目录下的文件夹数量,以决定后续操作逻辑(如批量处理子文件夹)。
无论是系统管理员还是开发者,掌握统计文件夹数量的方法都能提升工作效率。

方法一:使用 find 命令(递归统计,最常用)
find 是 Linux 中强大的文件查找工具,通过递归遍历目录,结合参数筛选文件夹,再配合 wc -l 统计数量,是最通用且灵活的方法。
基本语法
find [目标路径] -type d | wc -l
find:文件查找命令;[目标路径]:待统计的目录路径(如 当前目录、/home用户主目录);-type d:筛选文件类型为“目录”(directory);- 管道符,将前一个命令的输出作为后一个命令的输入;
wc -l:统计输入的行数(即文件夹数量)。
示例演示
(1)统计当前目录及其子目录下的所有文件夹数量
find . -type d | wc -l
- 输出示例:
15(表示当前目录下共有 15 个文件夹,包含所有嵌套子目录)。
(2)统计 /var/log 目录下的文件夹数量
sudo find /var/log -type d | wc -l
- 注意:
/var/log通常需要 root 权限访问,故加sudo。
(3)排除隐藏文件夹(以 开头的目录)
默认情况下,find 会包含隐藏文件夹(如 .git、.config),若需排除,可结合 -not 或 参数:
find . -type d -not -name ".*" | wc -l # 或 find . -type d ! -name ".*" | wc -l
-not -name ".*":排除所有以 开头的文件夹。
进阶技巧:限制统计深度
若仅需统计当前目录的直接子文件夹(不包含嵌套子目录),可加 -maxdepth 参数:
find . -maxdepth 1 -type d | wc -l
-maxdepth 1:限制查找深度为 1 级(仅当前目录)。- 输出示例:
5(当前目录下有 5 个直接子文件夹)。
方法二:使用 tree 命令(树状展示,直观统计)
tree 命令能以树状结构可视化目录层级,并直接输出文件夹总数,适合需要同时查看目录结构的情况。
安装 tree 命令
tree 默认未安装,可通过包管理器安装:
- Debian/Ubuntu:
sudo apt install tree - CentOS/RHEL:
sudo yum install tree - macOS(使用 Homebrew):
brew install tree
基本语法
tree -d [目标路径]
-d:仅显示目录(不显示文件),并在末尾输出文件夹总数。
示例演示
(1)以树状结构显示当前目录文件夹数量
tree -d .
- 输出示例
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

