导航菜单

Linux命令大全-diff命令

陆兴东 2026-04-07 8 浏览 Linux命令

一、简介

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个文件内容

[root@app01 abc]# diff 1.txt 3.txt
1d0
< 1234556677899012345566778990
2a2
> 12345678
10d9
< 6789
16d14
< 345678

上面的"1d0"和"2a2"表示1.txt和3.txt文件在第1行和第2行内容有所不同,其它的依次类推。"10d9"和"16d14"表示第一个文件比第二个文件多了第10和16行

2、并排格式输出

[root@app01 abc]# diff 1.txt 3.txt -y -W 50
123455667789901234556 
<
afakf;aa    afakf;aa         
>  12345678
dfaf;askfasf'    dfaf;askfasf'
asfasf      asfasf
asfsadfasdfas    asfsadfasdfas
fasdf      fasdf
asf      asf
asfas      asfas
fs      fs
6789          <
afas      afas
fas      fas
fa      fa
sfa      sfa
sf      sf
345678         
<
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
***************
*** 1,5 ****- 1234556677899012345566778990 
afakf;aa
 
dfaf;askfasf'
 
asfasf
 
asfsadfasdfas
--- 1,5 ---- 
afakf;aa
+ 12345678 
dfaf;askfasf'
 
asfasf
 
asfsadfasdfas
***************
===============此处省略部分内容===============