当一个文件有多个版本的时候,我们能否进行相关的比较,并且比较文件之间的差异,这时候就需要进行比较差异了,并且可以利用差异文件(类似Git上的对比文件)来进行修补工作,那么这个差异文件被称为修补文件 patch file ,我们可以使用patch命令来讲修改文件汇总包含的更改信息应用到原始文件中,同理,可以反过来撤销改变

如何生成差异文件

首先我们创建两个如下的文件

cat versiontest1.txt

this is the original text

line1

line2

line3

happy hacking

cat versiontest2.txt

this is the original text

line1

line2

happy hacking

this is new car

使用diff命令来进行输出

diff versiontest1.txt versiontest2.txt

4d3

< line3

5a5

> this is new car

更加详细的,一体化的diff的输出如下

diff -u versiontest1.txt versiontest2.txt > diff.patch

cat diff.patch

— versiontest1.txt 2020-07-20 10:27:39.794034279 +0800

+++ versiontest2.txt 2020-07-20 10:33:31.090825399 +0800

@@ -1,5 +1,5 @@

this is the original text

line1

line2

-line3

happy hacking

+this is new car

-u用于一体化输出 -用于表示删除的行 +用于表示新加入的行

然后我们需要将差异文件进行应用,应用到version1.txt的时候,我们可以得到了version2.txt

反之亦然

patch -p1 version1.txt < version.patch

然后撤销修改是再一次的应用

图片

我们甚至可以比较目录

diff命令可以以递归的形式作用于目录,对目录中所有的内容生成差异输出

diff -Naur directory1 directory2

上面命令的选项含义是

-N 将所有缺失的文件作为空文件

-a 将所有文件视为文本文件

-u 生成一体化输出

-r 遍历目录下的所有文件

发表评论

邮箱地址不会被公开。 必填项已用*标注