让我们回到2000年4月14日那天,就在美国密尔沃基的一家旅馆里,人门发现了一具尸体,经尸检,死者的死因是酗酒过量导致的死亡。死者被发现时,手里还拿着空酒瓶,死亡的前一刻应该还在不断地饮酒。
对于一座城市来说,类似这样的事件并不稀奇。但是,这一次却引起了计算机界的极度关注,人们在世界各地自发地发起纪念活动,哀悼一个重要生命的离去。
他是谁呢?他的名字叫菲利普·卡兹(Philip Katz),他是 Zip 压缩算法的发明人,全世界几乎每一台电脑中都运行着他的压缩程序,压缩后的文件后缀常以“.zip”结尾。这些 zip 结尾的文件大都有一个共同的特点,那就是在文件内容的开头部分都标有“PK”的字样,这是作者名字的首字母缩写。
那一年,菲利普·卡兹年仅 37 岁。
初识 zip 命令
和 gzip/bzip2 类似,zip 命令用于文件压缩,unzip 命令则用于解压缩。
我想把一个文件和一个文件夹一起压缩成一个压缩文件:
#我们将mynote.txt文件和soft文件夹一起压缩成zdata.zip文件
[roc@roclinux ruanjian]$ zip -r zdata.zip mynote.txt soft/
adding: mynote.txt (deflated 91%)
adding: soft/ (stored 0%)
adding: soft/redis-2.6.16.tar.gz (deflated 0%)
adding: soft/go1.1.2.Linux-amd64.tar.gz (deflated 1%)
adding: soft/.abc (stored 0%)
从上面的用法可以看出,zip 支持对文件、文件夹进行压缩。-r选项表示递归参数中指定的文件夹。
zip 命令,与 gzip/bzip2 命令有一个明显的不同,那就是 zip 命令在压缩过程中,会保留原始文件,这一点要记住哦。
接下来的解压工作,同样简单易学,使用 unzip 就好了:
#解压zip文件到newdir文件夹中,我们通过-d选项来指定解压缩的目标路径
[roc@roclinux ruanjian]$ unzip -d newdir/ zdata.zip
Archive: zdata.zip
inflating: newdir/mynote.txt
creating: newdir/soft/
inflating: newdir/soft/redis-2.6.16.tar.gz
inflating: newdir/soft/go1.1.2.Linux-amd64.tar.gz
extracting: newdir/soft/.abc
再介绍下 -v 选项和 -t 选项
假设有一个很大的压缩文件 large.zip,我不想解压缩,只想看看它里面有什么,这时就需要-v选项的协助:
[roc@roclinux ruanjian]$ unzip -v zdata.zip
Archive: zdata.zip
Length Method Size Cmpr Date Time CRC-32 Name
-------- ------ ------- ---- ---------- ----- -------- ----
96 Defl:N 9 91% 02-20- 16:49 b51bd543 mynote.txt
0 Stored 0 0% 02-18- 11:13 00000000 soft/
999579 Defl:N 999279 0% 02-17- 22:52 64e7f8d5 soft/redis-2.6.16.tar.gz
41756805 Defl:N 41320991 1% 02-17- 22:52 fefe0b94 soft/go1.1.2.Linux-amd64.tar.gz
0 Stored 0 0% 02-18- 11:13 00000000 soft/.abc
-------- ------- --- -------
42756480 42320279 1% 5 files
我下载了一个压缩文件 large.zip,想验证一下这个压缩文件是否下载完全了,-t选项就派上用场了。
[roc@roclinux ruanjian]$ unzip -t zdata.zip
Archive: zdata.zip
testing: mynote.txt OK
testing: soft/ OK
testing: soft/redis-2.6.16.tar.gz OK
testing: soft/go1.1.2.Linux-amd64.tar.gz OK
testing: soft/.abc OK
No errors detected in compressed data of zdata.zip.
竟然能在 zip 文件中删除文件
zip 其实很博大精深,很多你想象不到的功能,它都具备,很多地方体贴至极。下面我们举一个例子,来证明给你看。
有时候我们的工程师在辛辛苦苦压缩好 zip 文件后,发现里面有几个文件并不需要压缩进去,多余的文件占用了不少的空间。如果我们解压后再压缩的话,不仅耗费 cpu 资源和磁盘空间,而且还要有专人跟进等待和操作。
遇到这类问题该怎么办?zip 早就帮你想到啦。zip 提供了-d选项,即 --delete 选项,可以让我们在已经压缩好的 zip 文件中删除某个特定文件。
#还记得我们在压缩时囊括了的mynote.txt吧,现在把它从zip文件中清掉
[roc@roclinux ruanjian]$ zip zdata.zip -d mynote.txt
deleting: mynote.txt
#再看看,mynote.txt已经无影无踪了
[roc@roclinux ruanjian]$ unzip -v zdata.zip
Archive: zdata.zip
Length Method Size Cmpr Date Time CRC-32 Name
-------- ------ ------- ---- ---------- ----- -------- ----
0 Stored 0 0% 02-18- 11:13 00000000 soft/
999579 Defl:N 999279 0% 02-17- 22:52 64e7f8d5 soft/redis-2.6.16.tar.gz
41756805 Defl:N 41320991 1% 02-17- 22:52 fefe0b94 soft/go1.1.2.Linux-amd64.tar.gz
0 Stored 0 0% 02-18- 11:13 00000000 soft/.abc
-------- ------- --- -------
42756384 42320270 1% 4 files
这个用法有时候会事半功倍,比如在备份大规模数据或文件时,可以节省很多压缩和解压缩的时间。时间不是挤出来的,而是省出来的。
好啦,恭喜大家,zip 学习完了,该命令其实不难,赶快去实践中练习吧!
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如果觉得《linux上解压.zip命令 zip命令_Linux zip命令:压缩和解压文件(.zip文件)》对你有帮助,请点赞、收藏,并留下你的观点哦!