zdiff 和 zcmp 命令可以查看 Linux 文件是否不同,如果不同,又是如何不同的。
压缩的 Linux 文件很有用,因为它们可以节省磁盘空间,但是当您有一系列压缩文件并想确定是否有重复文件时,您应该怎么办?zdiff和zcmp命令可以提供帮助。
首先,如果一个目录包含两个如下所示的文件,仅从列表中就可以很容易地判断出它们并不相同。毕竟,文件大小有点不同。这些文件如下所示:
$ ls -l total 200 -rw-r--r--. 1 shs shs 102178 Nov 22 2021 2021.gz -rw-r--r--. 1 shs shs 102181 Nov 22 11:19 2022.gz
如果您使用diff命令比较文件,它将确认文件不同:
$ diff 2021.gz 2022.gz Binary files 2021.gz and 2022.gz differ
diff命令没有告诉您(因为它逐字节检查文件)的是,在创建这两个文件时压缩的材料实际上是相同的。要确定这一点,您需要使用zdiff或zcmp命令。如果每个文件中压缩的文件内容相同,您将不会从这两个命令中的任何一个命令中获得任何输出。
$ zdiff 2021.gz 2022.gz $ $ zcmp 2021.gz 2022.gz $
使用gunzip解压后的文件大小相同,可以用diff命令进行比较,确认内容相同。同样,diff命令没有输出表明没有差异。
$ gunzip 2021.gz $ gunzip 2022.gz $ ls -l total 852 -rw-r--r--. 1 shs shs 383654 Nov 22 2021 2021 -rw-r--r--. 1 shs shs 383654 Nov 22 11:19 2022 $ diff 2021 2022 $
很明显,文件内容是一样的。那么,为什么压缩版本看起来不同呢?这是因为gzip在压缩文件时会保留原始文件名并包含文件的时间戳。此信息不包含在比较中。
比较压缩文件和非压缩文件
虽然zdiff和zcmp命令都可以确定两个压缩文件是否相同,但它们还可以比较压缩文件和非压缩文件的内容。换句话说,如果将压缩文件与包含原始内容但未压缩的文件进行比较,您仍会确认内容匹配。
$ zdiff 2021.gz 2022 $ $ zcmp 2021.gz 2022 $
事实上,尽管对非压缩文件使用zdiff和zcmp没有任何好处,但这些命令仍会符合您的要求。当两个文件都解压缩时,下面的命令会比较这两个文件。
$ zdiff 2021 2022 $
zdiff 和 zcmp 的区别
zdiff和zcmp命令之间的主要区别在于当文件不同时它们会告诉您什么。如果您使用zdiff命令,它将显示在压缩内容中检测到的任何差异。
$ zdiff 2022.gz 2023.gz 6409c6409 < There may be only one active coprocess at a time. --- > There may be only one active coprocess at a time!
如果你使用zcmp命令,它会告诉你文件内容不同,并通过字节和行号定位任何差异。
$ zcmp 2022.gz 2023.gz /dev/fd/5 - differ: byte 383573, line 6409
总结
zdiff和zcmp命令允许您比较使用 gzip 压缩的文件的内容。如果文件内容匹配,这两个命令都不会显示任何输出,但当文件不同时,它们将显示不同的详细信息。您还可以使用这些命令将使用gzip压缩的文件与未压缩的文件进行比较,以确定两者的原始内容是否相同。
本文由 @小喵 发布于弱电智能网 。
题图来自Unsplash,基于CC0协议
内容观点仅代表作者本人,弱电智能网平台仅提供信息存储空间服务。
如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
文章名称:《Linux中检查压缩的文件是否相同的命令》
文章链接:https://www.ruodian360.com/tech/sytemops/37435.html
添加微信ydian188免费入群,记得备注“弱电智能网”。