diff命令用于比较文本文件差异,支持基础对比、统一格式(-u)、忽略空白(-w)、静默/并排显示(-q/-y)及递归目录比对(-r)五种常用方式。

如果您需要比较两个文本文件的内容是否相同,或者想了解它们之间具体有哪些不同,Linux 系统提供了 diff 命令来完成这一任务。以下是使用 diff 命令对比两个文件的常用方法:
一、基础用法:直接比较两个文件
该方法适用于快速查看两个文件的逐行差异,默认以“统一格式”或“正常格式”输出差异内容,便于人工识别变动位置与类型。
1、在终端中输入命令:diff file1.txt file2.txt
2、若两文件完全一致,命令不输出任何内容;若存在差异,则显示以 c(change)、a(add)、d(delete) 开头的差异行标记。
3、观察输出中类似 1,3c1,4 的标记,表示 file1.txt 的第 1–3 行被替换成 file2.txt 的第 1–4 行。
二、使用统一格式输出(-u 选项)
统一格式(unified format)将上下文行与变更行合并显示,更利于阅读和用于补丁生成,是日常开发中最常用的差异视图。
1、执行命令:diff -u file1.txt file2.txt
2、输出中以 @@ -a,b +c,d @@ 开头的行表示变更块范围,其中 -a,b 指原文件起始行号与行数,+c,d 指新文件对应范围。
3、以减号 - 开头的行表示仅存在于第一个文件中的内容,以加号 + 开头的行表示仅存在于第二个文件中的内容。
三、忽略空白字符差异(-w 选项)
当两个文件仅因空格、制表符或空行数量不同而产生差异时,可启用空白忽略模式,聚焦于实质内容变化。
1、运行命令:diff -w file1.txt file2.txt
2、该选项会跳过所有空白字符(包括空格、Tab、换行符前后的空白),仅比对非空白字符序列。
3、注意:若文件逻辑依赖缩进(如 Python 脚本),启用此选项可能导致关键结构差异被掩盖。
四、仅显示差异行简要信息(-q 与 -y 选项组合)
当只需确认文件是否不同,或希望并排查看差异时,可分别使用静默模式或并排格式,提升信息获取效率。
1、判断是否不同(静默模式):diff -q file1.txt file2.txt,仅输出 Files file1.txt and file2.txt differ 或无输出。
2、并排显示(side-by-side):diff -y file1.txt file2.txt,左右两栏分别显示两文件各行,差异处用 | 标记,新增/缺失行用 < 或 > 标示。
3、添加宽度限制避免截断:diff -y --width=120 file1.txt file2.txt
五、递归比较目录下所有同名文件(-r 选项)
当需批量验证两个目录结构及其内文本文件的一致性时,可启用递归模式,自动遍历子目录并比对同名文件。
1、执行命令:diff -r dir1/ dir2/
2、输出中每组差异前会标注路径,例如 diff -r dir1/file.txt dir2/file.txt
3、仅对两个目录中都存在的普通文件进行文本比对;若某文件仅存在于一个目录,则直接提示 Only in dir1/: file.txt。

















