1. 命令简介diffstat 是一个用于分析和可视化 diff 命令输出结果的统计工具。它读取 diff 命令生成的补丁文件或标准输入并生成一个简洁的柱状图或统计摘要用以展示文件变更的规模、类型增加 / 删除和分布情况。该工具常用于代码审查、版本变更分析等场景帮助开发者快速把握代码库的修改范围。2. 语法格式bash运行diffstat [选项]... [文件]...两种调用模式管道模式常用将 diff 命令的输出通过管道传递给 diffstatbash运行diff [diff选项] 文件1 文件2 | diffstat [diffstat选项]文件模式直接读取已保存的 diff 输出文件bash运行diffstat [选项] diff_output.txt说明不指定文件时默认从标准输入 stdin 读取支持传入多个文件自动合并所有统计结果3. 常用选项及说明表格选项说明-c添加 C 语言注释前缀/* */可嵌入源码-e将输出重定向到标准错误 stderr-f 格式设置输出格式0 精简摘要、1 单行柱状、2 详细柱状、4± 符号显示-h查看简短帮助信息-k合并文件名相同前缀简化展示-l仅列出变更文件名不显示统计图表-m将插入 / 删除合并统计为 “修改” 总数-n 长度设置文件名字段最小显示宽度-p 长度控制带路径文件名的显示宽度-r 0-2重命名检测级别0 关闭、1 基础、2 积极-s仅输出总计摘要不展示单文件详情-S 源指定项目根目录适配 git 子模块统计-t纯文本表格输出不绘制柱状图-u隐藏输出中的文件名-v / -V查看 diffstat 版本信息-w 宽度设置输出图形总宽度默认 80 列4. 示例用法4.1 基础用法对比目录并统计差异bash运行diff -u old_directory/ new_directory/ | diffstat输出示例plaintextfile1.c | 5 - file2.h | 3 - 2 files changed, 6 insertions(), 2 deletions(-)4.2 详细图形化输出bash运行diff -u original.c modified.c | diffstat -f 2输出示例plaintextoriginal.c | 12 ----- 1 file changed, 7 insertions(), 5 deletions(-)4.3 读取本地 diff 补丁文件bash运行diffstat -f 1 changes.diff4.4 结合 Git 进行代码变更统计bash运行# 统计未暂存变更 git diff --stat | diffstat -f 1 # 统计两次提交差异 git diff HEAD~1 HEAD | diffstat # 分支对比 表格输出 git diff branchA..branchB | diffstat -t4.5 自定义输出宽度与文件名长度bash运行diff -uR old/ new/ | diffstat -w 100 -n 504.6 仅快速列出变更文件bash运行git show --pretty --name-only HEAD | diffstat -l5. 注意事项输入格式要求优先解析统一差异格式diff -u /git diff普通 diff 格式可能解析异常。二进制文件处理可识别 diff 中的二进制文件标记但不统计行数仅统计文本文件变更。重命名识别规则默认将删文件 增文件视为两次变更-r 2可智能识别重命名合并为一次修改。性能限制超大 diff上万文件会消耗较多资源建议先过滤文件再统计。