You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何快速获取各子文件夹的非递归子文件夹数量并格式化输出

实现子文件夹名称与非递归子文件夹数的同行输出

单行命令直接实现

如果只是需要快速执行的单行命令,有两种可靠的写法:

  1. 用find处理(推荐,支持含空格、特殊字符的文件夹名):
for dir in */; do printf "%-20s %d\n" "$dir" "$(find "$dir" -maxdepth 1 -type d | wc -l | awk '{print $1-1}')"; done
  • 说明:find "$dir" -maxdepth 1 -type d会列出目标文件夹下所有目录(包括自身),统计后减1得到真实的非递归子文件夹数量;printf的%-20s参数让文件夹名左对齐占20个字符,保证输出排版整齐。
  1. 用ls简化写法(仅当文件夹名不含特殊字符时使用):
for dir in */; do echo -n "$dir "; ls -d "$dir"*/ 2>/dev/null | wc -l; done
  • 说明:ls -d "$dir"*/只列出目标文件夹下的子文件夹,2>/dev/null用来忽略没有子文件夹时的错误提示;echo -n确保文件夹名和统计数在同一行输出。

更健壮的bash脚本(适合复杂场景)

如果需要处理包含换行、特殊字符的极端情况,或者要复用逻辑,可以写一个简单的脚本:

#!/bin/bash
for dir in */; do
    # 跳过非目录项(严谨性处理)
    [[ -d "$dir" ]] || continue
    # 直接统计排除自身的子文件夹数量
    sub_count=$(find "$dir" -maxdepth 1 -type d ! -path "$dir" | wc -l)
    # 用制表符分隔输出,也可替换为空格调整格式
    printf "%s\t%d\n" "$dir" "$sub_count"
done
  • 说明:! -path "$dir"直接排除了文件夹自身,无需额外减1;[[ -d "$dir" ]]确保只处理目录,避免意外情况。

内容的提问来源于stack exchange,提问作者Tlaloc-ES

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 08:07:47