1. 前言

本文主要讲解在Linux下如何使用解压缩命令解压zip文件

zip解压缩软件怎么用(linux上如何解压zip文件)(1)

linux解压zip文件8个使用案例

2. unzip命令简介

unzip命令是用于.zip格式文件的解压缩工具 ,unzip命令可以列出、测试或从zip格式存档中提取文件,这些文件通常位于MS-DOS系统上。

在linux服务器解压zip类型的文件时,会提示

-bash: unzip: command not found

原因是绝大多数的Linux发行版都没有默认安装unzip,

执行以下命令安装zip和unzip套件,

[root@zcwyou ~]# yum install -y unzip zip

zip命令可以用来将文件压缩成为常用的zip格式。unzip命令则用来解压缩zip文件。

zip和unzip命令默认会从指定的ZIP存档中提取所有的文件到当前目录(及其下面的子目录)。一个配套程序zip(1L)创建ZIP存档;这两个程序都与PKWARE的PKZIP和PKUNZIP为MS-DOS创建的存档文件兼容,但许多情况下,程序选项或默认行为是不同的。

3. 解压zip文件常用参数

语法:unzip [选项] 压缩文件名.zip

各选项的含义分别为:

-x 文件列表解压缩文件,但不包括指定的file文件。

-v 查看压缩文件目录,但不解压。

-t 测试文件有无损坏,但不解压。

-d 目录 把压缩文件解到指定目录下。

-z 只显示压缩文件的注解。

-n 不覆盖已经存在的文件。

-o 强制覆盖已存在的文件不与用户交互确认。

-j 不重建文档的目录结构,把所有文件解压到同一目录下。

zip解压缩软件怎么用(linux上如何解压zip文件)(2)

解压zip文件常用参数

4. linux解压zip文件8个案例

把一个文件test.txt和一个目录dir1压缩成为test.zip:

[root@zcwyou ~]# zip -r test.zip test.txt dir1

解压缩wordpress.zip这个文件

[root@zcwyou ~]# unzip wordpress.zip

当前目录下有zcwyou1.zip,zcwyou2.zip和zcwyou3.zip,执行一条命令解压这3个文件:

[root@zcwyou ~]# unzip zcwyou\?.zip

注释:?表示一个字符,如果用*表示任意多个字符。

查看某压缩文件的内容,不解压,只查看:

[root@zcwyou ~]# unzip -v test.zip

测试压缩包

[root@zcwyou ~]# unzip -t test.zip

压缩包里有多层目录,解压时把所有文件放在同一层目录里,放弃原来的目录层次

[root@zcwyou ~]# unzip -j zcwyou.zip

把当前目录下面的abc.zip解压到123目录里面:

[root@zcwyou ~]# unzip abc.zip -d 123

把当前目录里的linuxrumen.zip直接解压到当前目录:

[root@zcwyou ~]# unzip linuxrumen.zip

5. unzip命令总结

解压后文件名乱码

zip解压缩软件怎么用(linux上如何解压zip文件)(3)

解压zip后文件名乱码

ZIP文件制作程序在制作ZIP文件时,默认使用所在操作系统的默认编码方案来编码待加入ZIP文件中的文件的文件名,ZIP文件中不存储这个使用的编码方案;而ZIP文件解压程序在解压ZIP文件时,默认也使用所在操作系统的默认编码方案来解码ZIP文件中的文件的文件名。如果解压时所在操作系统的默认编码方案跟制作时所在操作系统的默认编码方案不一致,那么在解压时解码得到的ZIP文件内文件的文件名就会出现乱码情形。可以通过“-O”选项来应对这种情况,通过该选项可以指定解压时解码ZIP文件内文件的文件名所应该使用的编码方案。“-O”选项在“man unzip”中没有介绍,在“unzip –help”中有一句话的介绍。

比如在中文Windows下制作一个ZIP文件,待加入文件的文件名包含有中文字符,在中文Windows中,默认的操作系统编码方案是CP936,因而使用CP936来编码这些文件的文件名。现在想要将该ZIP文件在Linux下解压,Linux下默认的操作系统编码方案是UTF-8,因而我们需要通过“-O”选项来指定使用CP936编码方案来解码文件的文件名,这样子解压后的文件名才不会出现乱码。

另外,RAR文件中会存储制作RAR文件时编码文件的文件名时所使用的编码方案,因而在解压的时候,可以直接读取该值,使用该值表示的编码方案来解码RAR中文件的文件名。