news 2026/7/12 1:32:51

Linux diffstat 命令详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux diffstat 命令详解

1. 命令简介

diffstat 是一个用于分析和可视化 diff 命令输出结果的统计工具。它读取 diff 命令生成的补丁文件或标准输入,并生成一个简洁的柱状图或统计摘要,用以展示文件变更的规模、类型(增加 / 删除)和分布情况。该工具常用于代码审查、版本变更分析等场景,帮助开发者快速把握代码库的修改范围。

2. 语法格式

bash

运行

diffstat [选项]... [文件]...

两种调用模式

管道模式(常用)将 diff 命令的输出通过管道传递给 diffstat

bash

运行

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

输出示例:

plaintext

file1.c | 5 ++++- file2.h | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-)

4.2 详细图形化输出

bash

运行

diff -u original.c modified.c | diffstat -f 2

输出示例:

plaintext

original.c | 12 ++++++++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)

4.3 读取本地 diff 补丁文件

bash

运行

diffstat -f 1 changes.diff

4.4 结合 Git 进行代码变更统计

bash

运行

# 统计未暂存变更 git diff --stat | diffstat -f 1 # 统计两次提交差异 git diff HEAD~1 HEAD | diffstat # 分支对比 + 表格输出 git diff branchA..branchB | diffstat -t

4.5 自定义输出宽度与文件名长度

bash

运行

diff -uR old/ new/ | diffstat -w 100 -n 50

4.6 仅快速列出变更文件

bash

运行

git show --pretty="" --name-only HEAD | diffstat -l

5. 注意事项

  1. 输入格式要求优先解析统一差异格式(diff -u /git diff),普通 diff 格式可能解析异常。

  2. 二进制文件处理可识别 diff 中的二进制文件标记,但不统计行数,仅统计文本文件变更。

  3. 重命名识别规则默认将删文件 + 增文件视为两次变更;-r 2可智能识别重命名,合并为一次修改。

  4. 性能限制超大 diff(上万文件)会消耗较多资源,建议先过滤文件再统计。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/10 22:14:13

Oracle

1. windows 安装oracle 环境要求 操作系统&#xff1a;必须是 64 位的。推荐 Windows 10/11 专业版/企业版 或 Windows Server 2019/2022 。家庭版可能会有兼容性问题。 内存与硬盘&#xff1a;至少 2GB 内存 &#xff08;强烈建议 4GB 以上&#xff09;。您的C盘或安装盘需要…

作者头像 李华
网站建设 2026/7/11 23:50:48

3分钟搞定B站缓存视频转换:m4s-converter完全指南

3分钟搞定B站缓存视频转换&#xff1a;m4s-converter完全指南 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾在B站缓存了珍贵的教学视频…

作者头像 李华
网站建设 2026/7/10 22:09:21

智能时代官网Geo内容优化策略:构建AI可信赖的信息枢纽

摘要随着生成式人工智能&#xff08;Generative AI&#xff09;技术的飞速发展&#xff0c;传统的搜索引擎优化&#xff08;SEO&#xff09;正逐步演变为生成式引擎优化&#xff08;Generative Engine Optimization, GEO&#xff09;。GEO的核心在于使网站内容能够被AI模型高效…

作者头像 李华
网站建设 2026/7/10 22:09:19

意念控制机器人:从脑机接口到远程意念指令的无限可能

1. 引言&#xff1a;当想象成为力量 想象一下&#xff0c;无需键盘、手柄或语音&#xff0c;只凭大脑中一闪而过的念头&#xff0c;就能操控千里之外的机器人完成复杂任务。这既不是科幻电影&#xff0c;也不是空谈&#xff0c;而是脑机接口与机器人技术融合带来的革命性图景。…

作者头像 李华
网站建设 2026/7/10 22:07:52

解密微信QQ防撤回:告别消息消失的终极方案

解密微信QQ防撤回&#xff1a;告别消息消失的终极方案 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁&#xff08;我已经看到了&#xff0c;撤回也没用了&#xff09; 项目地址: https://gitcode.com/GitHub_Tr…

作者头像 李华