一、简介
diff(英文全拼:different)命令是用来比较2个文件是否有差异内容的命令。
diff命令比较2个文件是否有异同处,它是以逐行的方式比较2个文本文件的异同处。
需要注意的是,diff命令是比较2个文件是否有差异,如果要比较目录,此时diff命令会比较目录中有相同文件名的文件,但不会比较其中的目录是否有差异。
二、语法
语法:diff [选项]... file1 file2
参数说明:
参数 | 说明 |
-a | 逐行比较文本文件内容 |
-W | 设置显示栏宽 |
-b | 不检查空格字符的不同 |
-x | 不比较指定的文件或目录 |
-d | 尽力找到一组较小的更改 |
-X | 将文件或目录类型存成文本文件 |
-E | 忽略由于选项卡扩展而引起的更改 |
-y | 以并列的方式显示文件的异同之处 |
-i | 忽略大小写 |
-w | 忽略所有空白 |
-t | 将制表符扩展为空格 |
-q | 仅判断两个文件是否不同 |
-N | 将不存在的文件视为空文件 |
-r | 递归处理所有子文件 |
--left-column | 若两个文件某一行内容相同,则在左侧列显示 |
--strip-trailing-cr | 输入时删除尾随的回车符 |
--suppress-common-lines | 仅显示不同之处,需要与y参数搭配使用 |
--brief | 仅判断两个文件是否不同 |
--help | 显示帮助信息 |
-version | 显示版本信息 |
三、 实战
1、比较2个文件内容
[]1d0< 12345566778990123455667789902a2> 1234567810d9< 678916d14< 345678
上面的"1d0"和"2a2"表示1.txt和3.txt文件在第1行和第2行内容有所不同,其它的依次类推。"10d9"和"16d14"表示第一个文件比第二个文件多了第10和16行
2、并排格式输出
[]123455667789901234556
<afakf;aa afakf;aa
> 12345678dfaf;askfasf' dfaf;askfasf'asfasf asfasfasfsadfasdfas asfsadfasdfasfasdf fasdfasf asfasfas asfasfs fs6789 <afas afasfas fasfa fasfa sfasf sf345678
<afa afa
"<"表示后面文件比前面文件少了1行内容
">"表示后面文件比前面文件多了1行内容
有时比较时会出现“|”,表示前后2个文件内容有不同
3、显示全部内文,并标出不同之处
[root@app01 abc]# diff -c 1.txt 3.txt*** 1.txt 2025-11-15 18:04:12.614231773 +0800--- 3.txt 2025-11-15 18:14:09.692585274 +0800***************- 1234556677899012345566778990
afakf;aa
dfaf;askfasf'
asfasf
asfsadfasdfas
afakf;aa+ 12345678
dfaf;askfasf'
asfasf
asfsadfasdfas***************===============此处省略部分内容===============