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

如何在Linux find命令中为子目录填充文件+文件夹总数占位符

实现方法

问题背景

在Bash环境下,我使用以下Linux find命令遍历/SomeFolder下的一级子目录,希望将命令中的占位符[COUNT]替换为每个子目录包含的文件与文件夹总数,该如何实现?命令如下:

find '/SomeFolder' -maxdepth 1 -mindepth 1 -type d -printf '%f **[COUNT]**\n' | sort

解决方案

根据你需要统计的是递归总条目数(含子目录内的所有文件和文件夹)还是直接子项数(仅当前目录下的一级条目),可以用以下方式实现:

方式一:基于find的批量处理(推荐)

递归统计所有条目
find '/SomeFolder' -maxdepth 1 -mindepth 1 -type d -exec sh -c '
  dir="$1"
  count=$(find "$dir" -mindepth 1 | wc -l)
  printf "%s **%d**\n" "$(basename "$dir")" "$count"
' sh {} \; | sort
仅统计直接子项
find '/SomeFolder' -maxdepth 1 -mindepth 1 -type d -exec sh -c '
  dir="$1"
  count=$(find "$dir" -maxdepth 1 -mindepth 1 | wc -l)
  printf "%s **%d**\n" "$(basename "$dir")" "$count"
' sh {} \; | sort

方式二:用for循环实现(更直观)

cd '/SomeFolder' || exit
for dir in */; do
  # 递归统计用这行
  count=$(find "$dir" -mindepth 1 | wc -l)
  # 仅统计直接子项就替换成这行:count=$(ls -1A "$dir" | wc -l)
  printf "%s **%d**\n" "${dir%/}" "$count"
done | sort

说明

  • basename "$dir" 和原命令中的%f作用一致,用来提取目录的短名称(不含路径)
  • wc -l 用来统计输出的行数,对应条目总数
  • 两种方式最后都通过sort保持输出有序

内容的提问来源于stack exchange,提问作者Akkad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 19:31:09