unzip命令

unzip 命令 #

unzip命令用于解压缩和管理 ZIP 格式的压缩文件。它可以列出、测试和提取 ZIP 归档中的文件和目录。

语法 #

unzip [选项] zipfile [文件...] [-d 目标目录]

常用选项 #

选项 描述
-l 列出 ZIP 文件中的内容,不解压
-v 详细列出 ZIP 文件中的内容,包括压缩信息
-t 测试 ZIP 文件的完整性
-d 目录 将文件解压到指定目录
-o 覆盖已存在的文件,不提示
-n 不覆盖已存在的文件
-j 不创建目录结构,将所有文件解压到同一目录
-P 密码 使用指定的密码解压加密的 ZIP 文件
-q 安静模式,不显示解压过程
-a 将文本文件转换为当前系统的文本格式
-L 将 ZIP 文件中的所有文件名转换为小写
-C 区分大小写匹配文件名(默认不区分)
-x 文件 排除指定的文件
-Z 仅显示 ZIP 文件的注释

常见用法 #

1. 解压 ZIP 文件 #

unzip archive.zip

这会将archive.zip中的所有文件解压到当前目录。

2. 列出 ZIP 文件内容,不解压 #

unzip -l archive.zip

输出示例:

  Length      Date    Time    Name
---------  ---------- -----   ----
      217  2023-07-19 10:30   file1.txt
      432  2023-07-19 10:31   directory/file2.txt
---------                     -------
      649                     2 files

3. 详细列出 ZIP 文件内容 #

unzip -v archive.zip

输出示例:

 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
     217  Defl:N      142  35% 2023-07-19 10:30 3d4e394f  file1.txt
     432  Defl:N      298  31% 2023-07-19 10:31 f4a5c612  directory/file2.txt
--------          -------  ---                            -------
     649              440  32%                            2 files

4. 解压到指定目录 #

unzip archive.zip -d /path/to/directory/

5. 测试 ZIP 文件的完整性 #

unzip -t archive.zip

6. 解压特定文件 #

unzip archive.zip file1.txt

7. 解压多个特定文件 #

unzip archive.zip file1.txt directory/file2.txt

8. 覆盖已存在的文件,不提示 #

unzip -o archive.zip

9. 不覆盖已存在的文件 #

unzip -n archive.zip

10. 不创建目录结构 #

unzip -j archive.zip

这会将所有文件解压到同一目录,忽略原始目录结构。

11. 解压加密的 ZIP 文件 #

unzip -P password archive.zip

如果不指定密码,系统会提示输入:

unzip archive.zip

12. 安静模式解压 #

unzip -q archive.zip

13. 将文本文件转换为当前系统的文本格式 #

unzip -a archive.zip

这对于在不同操作系统之间传输文本文件很有用。

14. 将 ZIP 文件中的所有文件名转换为小写 #

unzip -L archive.zip

15. 排除特定文件 #

unzip archive.zip -x "*.log" "*.tmp"

16. 显示 ZIP 文件的注释 #

unzip -Z -c archive.zip

17. 使用通配符解压特定类型的文件 #

unzip archive.zip "*.txt"

实用示例 #

1. 解压多个 ZIP 文件 #

unzip '*.zip'

2. 解压并显示特定文本文件的内容 #

unzip -p archive.zip file.txt | less

3. 检查 ZIP 文件是否加密 #

unzip -l archive.zip

如果文件加密,会显示"encrypted"标记。

4. 解压大型 ZIP 文件,显示进度 #

unzip -v archive.zip | wc -l  # 获取文件总数
unzip archive.zip | pv -l -s [文件总数] > /dev/null

5. 解压 ZIP 文件并保留原始权限 #

unzip -X archive.zip

6. 解压 ZIP 文件并保留原始时间戳 #

unzip -DD archive.zip

7. 解压分卷 ZIP 文件 #

# 假设有archive.z01, archive.z02, ..., archive.zip
zip -F archive.zip --out complete.zip
unzip complete.zip

提示 #

  • 在 Linux 上,可能需要安装unzip包,因为它可能不是默认安装的
  • 使用-l选项可以在解压前查看 ZIP 文件的内容
  • 使用-t选项可以检查 ZIP 文件的完整性
  • 对于加密的 ZIP 文件,可以使用-P选项指定密码,但这种方式不安全,因为密码会显示在进程列表中
  • 使用-d选项可以将文件解压到特定目录,避免污染当前目录
  • 使用-o-n选项可以控制是否覆盖已存在的文件
  • 使用-j选项可以忽略目录结构,将所有文件解压到同一目录
  • 使用-p选项可以将文件内容输出到标准输出,而不是保存到文件
  • ZIP 的加密功能相对较弱,对于敏感数据,考虑使用其他加密方法
  • 在脚本中使用unzip时,可以使用-q选项抑制输出