用 find + du 配合 awk 可按后缀精确统计空间占比,核心是安全提取文件后缀并累加字节数,再计算百分比;ncdu 仅适合交互式验证,无法直接导出后缀占比。
用
+
按后缀分组统计空间占用
直接用
本身不支持按扩展名聚合,必须配合
筛选 +
或
归类。核心思路是:对每个文件单独跑
获取字节数,提取后缀(注意空后缀和隐藏文件),再累加求占比。
常见错误是用
—— 这会漏掉子目录中匹配的文件,且通配符在深层目录失效;还有人用
反向排除,逻辑绕、易出错。
:先安全获取所有非隐藏普通文件(
防空格路径崩)
后缀提取要小心:
后用
提取最后一个点后的部分,但得单独处理无点文件(如
)和以点开头的(如
),建议统一归为
或
最终用
累加,再除以总数算百分比
一行命令快速出带百分比的汇总表
以下命令可直接运行(替换
):
说明:
是正则提取后缀,比
更准(避免
被截成
);
按百分比倒序排,一眼看到大头。
注意:如果目录含大量小文件,
可能触发多次
调用,性能略低但结果准确;追求速度可用
(GNU coreutils ≥8.25),但兼容性稍差。
Trae linux
Trae Linux 官方版本现已全面上线,开发者可直接访问 Trae 官网(trae.cn 国内版或 trae.ai 国际版)获取专属安装包。该版本完美适配主流 Linux 发行版,提供 .deb(适配 Ubuntu/Debian)、.rpm(适配 RHEL/Fedora)以及通用 .tar.gz 格式,并全面支持 x64 与 ARM64 架构。
下载
用
交互式查看但无法直接导出后缀占比
是可视化磁盘分析利器,但它按目录树展开,不提供“按扩展名聚合”视图。有人尝试
导出 JSON 再解析,但字段里没有后缀信息,必须额外从路径字段里提取,反而比纯
方案更重。
所以别被界面迷惑——真要统计后缀占比,
只适合辅助验证某类文件(比如确认
是否集中在某个子目录),不能替代脚本化统计。
安装:
(Debian/Ubuntu)或
(RHEL/CentOS)
启动后按
可删掉大文件快速释放空间,但这和统计无关
它的优势在于实时交互、支持键盘导航,不适合批量分析或 CI 场景
隐藏文件、符号链接和硬链接的处理差异
默认
不包含符号链接(除非加
),而硬链接会被重复计数(
对同一 inode 多次出现仍累加)。这会导致统计偏差:
若需包含软链指向的文件,加
,但注意可能跨文件系统或循环引用
若要排除硬链接重复,得先用
按 inode 去重,再喂给
,复杂度陡增,一般场景不推荐
隐藏文件(
)是否纳入取决于需求:日志类统计常要包含
,配置类可能忽略
目录下的文件——建议显式控制,比如加
最易被忽略的是:不同文件系统挂载点(如
单独挂载)下,
统计天然隔离,但你的脚本若没限定
,可能跨分区把其他文件系统内容也扫进来,导致总数虚高。
finddudufindawksortdu -bls *.ext | du -shdu --excludefind /path -type f -not -name ".*" -print0 | xargs -0 du -b-print0basenamesed 's/.*\.//;t;d'Makefile.gitignorenoexthiddenawk '{ext[$2] += $1} END {for (e in ext) print ext[e], e}'/pathfind /path -type f -print0 | \
xargs -0 du -b | \
awk -F/ '{file=$NF; sub(/^.*\./, "", file); if(file=="") file="noext"; print $1, file}' | \
awk '{size[$2]+=$1; total+=$1} END {for (e in size) printf "%6.2f%% %s\n", size[e]/total*100, e}' | \
sort -nrsub(/^.*\./, "", file)cut -d. -f2-a.b.c.jsb.c.jssort -nrxargsdudu -b --files0-from=-ncduncduncdu -o /tmp/ncdu.json /pathfindncdu.logapt install ncduyum install ncduShift+Dfind -type f-followdu-followfind -type f -printf "%i %p\n"du.*.log.git-not -path "./.git/*"/homedu-xdev