diff命令是英文单词different的简写,其功能是逐行比较两个文件的内容是否相同。
diff命令的语法格式如下:
diff [选项] 文件名1 文件名2
常用选项如下:
选项 | 含义 |
-a | 所有文件均按文本文件处理 |
-b | 忽略由空格数不同造成的差异 |
-c | 比较的同时输出文件上下文内容(默认3行) |
-i | 忽略文件内容大小写的区别 |
-q或--brief | 仅判断两个文件是否不同 |
-r | 递归处理所有子目录 |
-t | 将输出中的tab转换成空格 |
-y | 以两栏的格式输出 |
-w | 忽略所有空格 |
-B | 忽略任何因空行而造成的差异 |
-N | 不存在的文件以空文件方式处理 |
-W | 设置每行显示的字符数 |
实例演示
1、简单比较两个文件是否不同
[root@node1 ~]# diff -q file1 file2
文件 file1 和 file2 不同
2、比较两个文件在哪些行存在不同
# 先给出文件上下文,然后进行比较
[root@node1 ~]# diff -c file1 file2
*** file1 2024-03-17 17:10:19.566693137 +0800
--- file2 2024-03-17 17:05:44.091211845 +0800
***************
*** 1,5 ****
#This is the first line
The second line of file
!
! this is a new line
123456
--- 1,4 ----
#This is the first line
The second line of file
! this is a new line
123456
注:不相同的行,前面加!进行标识
3、忽略空行和空格,比较两个文件是否相同
从上图中的输出可以看出,这两个文件仅因存在空行和空格而造成不同。如下所示,若加上选项-b和-B,两个文件就相同了(没有任何输出)。
[root@node1 ~]# diff -bB file1 file2
4、分两栏输出比较
有时为便于观察,可以将两个文件内容分成两行进行逐行比较。不相同的行前面会加坚线或其它符号,如下图所示。
[root@node1 ~]# diff -y file1 file2
#This is the first line #This is the first line
The second line of file The second line of file
| this is a new line
this is a new line <
123456 123456