zip/unzip 指令 + zipinfo

zip/unzip 指令 + zipinfo

如果系统中没有 zipunzip 命令的话,下载也很方便,在 Centos 中执行

yum install -y zip unzipss

zip

Linux zip 命令用于压缩文件。zip 是个使用广泛的压缩程序,压缩后的文件后缀名为 .zip

我感觉 ziptar+gzip 好用,而且功能更多样,是的,但是在特定场景下 zip 也有缺点。

zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>]

zip 命令是,先写目标压缩包,再写被压缩的源文件或者被操作的文件

常用参数:-r -j -d -c -z -m -i -x


基础用法

zip target.zip sourcefile0...

zip -r target.zip sourcefile0...

注意,zip 压缩,是不会删除源文件的,此外,上面的命令会把从当前目录开始,到目标文件的目录结构,也复制到压缩包中,比如从当前目录到 11.txt,有一层文件夹 zipsource,那么压缩包里,11.txt 的路径就是 <压缩文件>/zipsource/11.txt。这样的话,解压的时候会自动创建压缩包中的目录到解压的目标路径中。除非带上 -j

zip -j target.zip sourcefile0...

这样会有一个问题,不看文件夹的话,很容易出现重复文件,比如 ~/source/aaa.txt~/source/2/aaa.txt 在压缩 ~/source 的时候,肯定会出现相互覆盖的情况,这个时候会报错:

zip -rj testj.zip source

zip error: Invalid command arguments (cannot repeat names in zip file)

实际情况如下:

压缩包建立之后,想要往里加文件,应该怎么办?

还是用这个命令:

zip target.zip sourcefile0...

如果重复地往 zip 压缩包内的同一个目录下添加同名文件,文件会自动更新。文件名称前面也变成了 updating

删除 zip 包里的文件则要使用 -d 参数


查看压缩包内容

unzip -l target.zip

或者用 zipinfo

unzip

Linux unzip 命令用于解压缩 zip 文件。unzip.zip 压缩文件的解压缩程序。

unzip [-cflptuvz][-agCjLMnoqsVX][-P <密码>][.zip文件][文件][-d <目录>][-x <文件>] 或 unzip [-Z]

常用参数: -d -l -v -c -j -n -o


常规操作

unzip -d targetpath zipfile.zip:将 zip 文件解压到目录路径

当 targetpath 不存在的时候,系统会自动创建。当解压出的文件和目标路径下已存在的文件重名了的时候,unzip 会需要你确认操作:

rename 表示重命名。

你可以使用 -o 或者 -n 直接全部覆盖或者全部不覆盖

还可以只解压压缩包内的某几个特定的文件,很方便

zipinfo

Linux zipinfo 命令用于列出压缩文件信息。执行 zipinfo 指令可得知 zip 压缩文件的详细信息。


其实啥参数都不带就够了。

zipinfo ziptarget/123.zip

不是很好用,没有 unzip -l target.zip 好用