在 Linux 上比较文件的聪明方法

自 Linux 早期以来,用于比较文件的命令已经激增。在这篇文章中,我们将介绍一组可用于比较文件的命令,并重点介绍一些较新的命令所提供的优势。

差异

diff命令是用于检测和报告文件差异的最古老且仍然流行的命令之一。比较两个与会者列表,diff命令将简单而清晰地向您显示差异。

$ diff 出勤-2020 出勤-2021
10,12c10
< 门罗·兰德里
<乔纳森·穆迪
< 唐纳尔摩尔
---
> 桑德拉·亨利-斯托克

仅显示不同的行。输出位于仅在第一个文件中带有< 的行和仅在第二个文件中带有> 的行之前

此输出不显示参加两次会议的个人姓名,而仅显示仅参加 2020 年会议和仅参加 2021 年会议的人员姓名。如果只想知道文件是否不同,可以添加-q参数。

 
$ diff -q 出勤-2020 出勤-2021
2020 年出勤和 2021 年出勤文件不同

如果两个文件相同,diff命令不会告诉您任何信息。如果要确认文件相同,可以添加-s参数。

$ diff 出勤-2020 出勤-2021
$ diff -s 出勤-2020 出勤-2021
文件考勤-2020 和考勤-2021 是相同的

DIFF命令也可以比较二进制文件(例如,可执行文件和图像),但只会告诉你,如果它们是相同的或不同的。

$ diff -s penguin.png penguin0.png
文件 penguin.png 和 penguin0.png 是相同的

如果要查看两个文本文件的并排比较,可以使用 -y 参数并查看如下输出:

$ diff -y 出勤率-2020 出勤率-2021
阿尔弗雷达分行 阿尔弗雷达分行
汉斯·伯里斯 汉斯·伯里斯
菲利克斯·伯特 菲利克斯·伯特
雷·坎波斯 雷·坎波斯
朱丽叶陈朱丽叶陈
丹佛坎宁安丹佛坎宁安
特里斯坦日特里斯坦日
肯特农夫肯特农夫
特丽·哈灵顿 特丽·哈灵顿
梦露兰德里 | 桑德拉·亨利-斯托克
乔纳森·穆迪 <
唐纳尔摩尔 <
莱恩公园 莱恩公园
阿尔弗雷多·波特 阿尔弗雷多·波特
费利佩·拉什费利佩·拉什

颜色差异

colordiff命令增强了使用颜色来突出差异两个文本文件之间的差异。

 

$ colordiff 出席率-2020 出席率
-2021 10,12c10 
< 门罗·兰德里
< 乔纳森·穆迪
<唐奈尔·摩尔
---
< 桑德拉·亨利-斯托克

如果您添加-u选项,则包含在两个文件中的那些行将以您的正常字体颜色显示。

差价

wdiff命令使用不同的策略。它使用特殊字符突出显示仅在第一个或第二个文件中的行。方括号中的那些只在第一个文件中。那些被大括号包围的只在第二个文件中。

$ wdiff 出席率-2020 出席率-2021
阿尔弗雷达分行
汉斯·伯里斯
菲利克斯·伯特
雷·坎波斯
朱丽叶陈
丹佛坎宁安
特里斯坦节
肯特农夫
特丽·哈灵顿
[- Monroe Landry <== 文件 1 中的行开始
乔纳森·穆迪
Donnell Moore -] 			<== 仅在文件 1 中的行停止
{+ Sandra Henry-Stocker +} 	<== 仅在文件 2 中的行
莱恩公园
阿尔弗雷多·波特
菲利普·拉什

vimdiff

所述vimdiff同时命令采用完全不同的方法。它使用vim编辑器以并排方式打开文件。然后使用背景颜色突出显示不同的行,并允许您编辑两个文件并分别保存它们。

与上述命令不同,它在桌面上运行,而不是在终端窗口中运行。

在 Debian 系统上,您可以使用以下命令安装vimdiff

$ sudo apt 安装 vim

vimdiff.jpg <=====================

孔帕雷

kompare命令,像vimdifff,运行在桌面上。它显示要查看和合并的文件之间的差异,程序员经常使用它来查看和管理代码中的差异。它可以比较文件或文件夹。它也非常可定制。

kdiff3

kdiff3工具允许你最多比较三个文件,而不是只看到突出了差异,但您认为合适的合并文件。此工具通常用于管理程序代码中的更改和更新。

vimdiffkompare 一样kdiff3在桌面上运行。

使用校验和

找出文件是否相同或不同的一种简单方法是计算校验和。如果结果相同,则文件不同的可能性无穷小。

使用校验和的主要优点之一是文件甚至不需要位于同一系统上。使用相同的校验和命令并比较结果。缺点是校验不会告诉你怎样的文件是不同的,甚至多少它们是不同的。如果单个字节不同,校验和将显着不同。这就是他们的工作方式。这两个文件只有一个不相同的字母,但校验和却截然不同:

$ shasum words-1 words-2
36e191c4a932d239233ca8cced35f7689d070c0c words-1
c09bb9b4b5f61a72a7ca6e933981e151cd35c9a7 words-2

请记住,有许多用于计算校验和的命令。像这样的命令应该可以帮助您识别系统上安装的那些:

$ apropos 校验和
cksum (1) - 校验和并计算文件中的字节数
Dpkg::Checksums (3perl) - 生成和操作文件校验和
shasum (1) - 打印或检查 SHA 校验和
sum (1) - 校验和并计算文件中的块数
tc-csum (8) - 校验和更新动作

相关实战:https://www.yunduoketang.com/article/dzzxjypt.html
https://www.yunduoketang.com/article/qfwzxjx.html
https://www.yunduoketang.com/article/dzhkbs.html
https://www.yunduoketang.com/article/xstkzs.html
https://www.yunduoketang.com/article/znwxglxt.html

上一篇:虚拟 DOM 和 diff 算法 —— 精细化比较


下一篇:PHP 删除数组中元素的方式