Linux文件比较(diff)

Linux文件比较(diff)教程

Linux 中的 diff 命令用于逐行比较两个文本文件,列出其不同之处。对给出的文件进行系统的检查,并显示出两个文件中所有不同的行。

如果 diff 命令后跟的是目录,则会对该目录中的同名文件进行比较,但不会比较其子目录。

Linux diff命令详解

功能

对文本进行比较。

语法

diff [options] files...

参数

参数 描述
-a 预设只会逐行比较文本文件。
-b 忽略行尾的空格。
-B 不检查空白行。
-c 用上下文输出格式,提供 n 行上下文。
-C 执行与 -c 命令相同。
-d 使用不同的演算法,以较小的单位来做比较。
-f 输出的格式类似于 ed 的 script,但按照原来文件的顺序来显示不同处。
-H 比较大文件时可以加快速度。
-l 若比较的文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。
-i 不检查大小写的不同。
-I 将结果交由 pr 程序来分页。
-n 将比较结果以 RCS 的格式来显示。
-N 在比较目录时,若文件 A 仅出现在某个目录中,则预设会显示。
-p 若比较的文件为 C 语言的程序源文件时,则预设会显示。
-P 与 -N 类似,但只有当第二个目录包含了包含了第一个目录中没有的文件按时,才会将这个文件与空白的文件比较。
-q 仅显示有无差异,不显示详细信息。
-r 比较子目录中的文件。
-s 若没有发现任何差异,任然显示信息。
-S 在比较目录时,从指定的文件开始比较。
-t 在输出时将 tab 字符展开。
-T 在每行前面加上 tab 字符以便对齐。
-u,-U 以合并的方式来显示文件内容的不同。
-v 显示版本信息。
-w 忽略全部的空格字符。
-W 在使用 -y 参数时,指定栏宽。
-x 不比较选项中指定的文件或目录。
-X 可以将文件或目录类型存成文本文件,然后指定此文本文件。
-y 以并列的方式显示文件的异同之处。
–help 显示帮助。

diff命令工作原理

diff 分析两个文件,并输出两个文件的不同的行。diff 的输出结果表明需要对一个文件做怎样的操作之后才能与第二个文件相匹配或者这么理解:与第一个文件相比,第二个文件发生了那些变化。

diff 并不会改变文件的内容,但是 diff 可以输出一个 ed 脚本来应用这些改变。

Linux diff命令常用实例

实例

实例 描述
diff file1 file2 比较文件 file1 和 file2

比较文件内容

语法

diff file1 file2

案例

我们首先,使用 vim 新建一个 haicoder1.txt 文件,并输入以下内容:

Hello HaiCoder www.haicoder.net Learn Python Learn vim Learn Linux

我们再次新建一个 haicoder2.txt 文件,并输入以下内容:

Hello haiCoder www.haicoder.net Learn python Learn vim Learn Linux Study Golang

现在,我们使用 diff 命令,查看这两个文件的区别,具体命令如下:

diff haicocder1.txt haicocder2.txt

如下图所示:

83_Linux文件比较diff命令.png

运行后,终端输出如下:

84_Linux文件比较diff命令.png

我们看到,最终输出了文件的差异信息,其中,左箭头表示左侧文件的内容,右箭头表示右侧文件的内容。

Linux文件比较(diff)总结

Linux 中的 diff 命令用于逐行比较两个文本文件,列出其不同之处。对给出的文件进行系统的检查,并显示出两个文件中所有不同的行。