linux unzip 命令

1.命令简介

unzip 命令用于列出、测试和提取 ZIP 存档中的压缩文件。如果 unzip 不跟任何选项(默认行为),会将指定的 ZIP 存档文件解压到当前目录。

2.命令格式

unzip [-Z] [OPTIONS] [ZIP_FILE...] [FILE...]  [-x FILE...] [-d EXDIR]

[ZIP_FILE…] 表示 ZIP 存档文件,[FILE…] 表示待处理的 ZIP 存档文件中的文件列表,[-x FILE…] 表示不处理的文件列表,[-d EXDIR] 表示解压缩后的文件存放的目录。文件名均可使用通配符表示。

注意,unzip 可以不跟任何选项和参数,单独执行 unzip 将打印简要帮助信息。

3.选项说明

长选项的强制参数对于短选项也是强制的。下面主要介绍了通用选项和 Linux 平台的选项,其它平台(VMS、MS-DOS、MacOS 等)的专用选项参见 unzip(1) 手册。

-Z
	等于执行 zipinfo(1) 命令,用于查看 zip 文件的整体信息
-c
	将解压缩后的文件内容输出到标准输出(屏幕),并对字符做适当的转换。类似于 -p 选项,但是 -c 会输出文件名
-f
	更新现有的文件,即只提取那些已经存在于磁盘上且比磁盘副本更新的文件
-l
	只显示压缩文件内所包含的文件不解压
-p
	与 -c 选项类似,以二进制模式解压文件,不会执行任何的转换,并将文件内容输出到标准输出(屏幕)
-t
	对文件进行 CRC 校验检查压缩文件是否正确
-u
	与 -f 参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压出来
-v
	执行时显示详细的信息
-z
	仅显示压缩文件的备注信息
-a
	对文本文件进行必要的字符转换
-b
	将所有文件视为二进制文件,不对文本文件进行字符转换
-B
	对本地即将被覆盖的文件进行备份
-C
	匹配命令行指定的待提取的文件列表时不区分大小写
-D
	不还原提取项的时间戳。正常情况,unzip 会恢复提取项的时间信息(Access Time、Modify Time 和 Change Time)
-j
	不生成提取项的目录,即所有提取项均放到同级目录下
-L
	将压缩文件中的全部文件名改为小写
-M
	将所有输出通过 unzip 内部的类似于 more(1) 的浏览工具进行浏览
-n
	永远不要覆盖现有文件。如果文件已经存在,则跳过该文件的提取而不提示。默认情况下,unzip 会进行询问是否提取、覆盖或重命名
-o
	覆盖现有文件而不提示
-P PASSWORD
	使用密码解密 zip 文件
-q
	执行时不显示任何信息
-s
	将文件名中的空白字符转换为下划线
-U	
	修改或禁用UTF-8处理。当 UNICODE_SUPPORT 可用时,选项 -U 强制 unzip 将 UTF-8 编码的文件名中的所有非 ASCII 字符转义为 #uxxx(对于UCS-2字符,或者对于需要 3 个字节的 UNICODE 码点转为 #Lxxxxxx)。此选项主要用于在怀疑提取 UTF-8 编码文件名时会失败而进行的调试行为
-W
	修改通配符 ?(单字符统配符)与 *(多字符通配符) 的匹配行为,使得 ? 与 * 不能匹配目录的分隔符 /。如 "*.c" 匹配 "foo.c",但不能匹配 "mydir/foo.c"
-X
	解压缩时同时恢复文件原来的 UID/GID
-:
	允许创建提取项的父目录 ../,默认情况下为了安全起见是不允许的。使用该选项应格外小心
-^
	允许在提取的 ZIP 存档项的名称中使用控制字符

4.常用示例

首先使用 zip 命令对文件 /etc/passwd 和 /etc/group 进行压缩生成 test.zip 文件,同时使用 -z 选项为 zip 文件添加注释说明。

zip test.zip /etc/passwd /etc/group
  adding: etc/passwd (deflated 58%)
  adding: etc/group (deflated 45%)
enter new zip file comment (end with .):
this is test.zip's comment
.

(1)使用 -Z 选项查看 ZIP 归档文件 test.zip 的整体信息。

unzip -Z test.zip
Archive:  test.zip
Zip file size: 1321 bytes, number of entries: 2
-rw-r--r--  3.0 unx     1552 tx defN 19-Jan-04 14:56 etc/passwd
-rw-r--r--  3.0 unx      642 tx defN 19-Jan-04 14:56 etc/group
2 files, 2194 bytes uncompressed, 1005 bytes compressed:  54.2%

(2)将压缩文件解压缩至当前目录。

unzip test.zip

(3)如果当前目录存在同名的文件,解压缩时不覆盖原有文件。

unzip -n test.zip

(4)解压缩时覆盖原有文件,不进行询问。

unzip -o test.zip

(5)将压缩文件解压缩至指定目录。

mkdir dir
unzip test.zip -d dir

(6)仅显示 zip 文件的注释说明,不解压。

unzip -z test.zip
Archive:  test.zip
this is test.zip's comment

(7)仅查看 zip 文件中的文件列表,不解压。

unzip -l test.zip
Archive:  test.zip
this is test.zip's comment
  Length      Date    Time    Name
---------  ---------- -----   ----
     1552  01-04-2019 14:56   etc/passwd
      642  01-04-2019 14:56   etc/group
---------                     -------
     2194                     2 files

你可能感兴趣的:(linux)