zip & unzip
zip 和 unzip 是 Linux 系统中用于创建和解压 .zip 格式压缩文件的工具,使用 Deflate 算法(默认),支持多文件压缩、保留目录结构、加密压缩,并且跨平台兼容(Windows、macOS、Linux)。
zip(压缩)
zip [选项] 压缩包名称 文件/目录...- zip 只用于压缩,解压通常使用 unzip 命令
- zip 可以一次压缩多个文件或目录,如果需要压缩整个目录,需要加
-r(递归)选项 - zip 默认是创建或更新压缩包,如果指定的压缩包已经存在,它会自动把指定文件添加或更新到压缩包中
unzip(解压)
unzip [选项] 压缩包名称 [文件...]- 不指定文件则解压压缩包中所有文件
- 指定文件则只解压压缩包中的部分文件
zip 选项
Section titled “zip 选项”1. 基础压缩选项
| 选项 | 说明 |
|---|---|
-r |
递归压缩目录(包括子目录) |
-0 至 -9 |
设置压缩级别(-0 无压缩,-9 最高压缩率,默认 -6) |
-q |
安静模式(不显示压缩过程的详细信息) |
-v |
详细模式(显示压缩进度、文件信息、压缩率等) |
2. 高级功能选项
| 选项 | 说明 |
|---|---|
-u <files> |
更新已有文件或添加新文件,但不影响压缩包里其他文件 |
-d <files> |
从压缩包中删除指定文件 |
-e |
加密压缩包(会提示输入密码,解压时需输入密码) |
-j |
仅压缩文件内容,不保留目录结构(所有文件直接放在压缩包根目录) |
unzip 选项
Section titled “unzip 选项”1. 基础解压选项
| 选项 | 说明 |
|---|---|
-d <dir> |
指定解压目标目录(默认解压到当前目录) |
-l |
仅列出压缩包中的文件列表,不解压 |
-t |
测试压缩包的完整性(检查是否有损坏或错误) |
-v |
详细模式(显示解压进度、文件权限、压缩率等信息) |
-q |
安静模式(不显示解压过程的详细信息) |
2. 高级操作选项
| 选项 | 说明 |
|---|---|
-o |
覆盖模式(解压时直接覆盖已存在的文件,不提示) |
-n |
不覆盖模式(不解压已存在的文件,避免覆盖) |
-j |
解压时忽略原目录结构,将所有文件提取到同一目录 |
-x <files> |
排除指定文件(解压时不提取该文件) |
zip 示例
Section titled “zip 示例”1. 基础压缩操作
# 压缩单个文件(file.txt -> archive.zip)zip archive.zip file.txt
# 压缩多个文件(file1.txt、file2.txt 加入 archive.zip)zip archive.zip file1.txt file2.txt
# 递归压缩目录(将 dir1 及其子内容加入 dir.zip)zip -r dir.zip dir1/
# 最高压缩率压缩(-9 级别,压缩率高但速度慢)zip -9 -r backup.zip /home/user/docs2. 压缩包更新与维护
# 向 existing.zip 中添加新文件 newfile.txtzip existing.zip newfile.txt
# 更新压缩包(仅替换比压缩包中更新的文件)zip -u existing.zip modified_file.txt
# 从 archive.zip 中删除 unwanted.txtzip -d archive.zip unwanted.txt3. 加密压缩
# 创建加密压缩包(会提示输入密码)zip -e secret.zip sensitive_data/4. 不保留目录结构
假设目录结构如下:
myfolder/├── file1.txt└── subdir/ └── file2.txt默认压缩,保留目录结构:
zip -r archive.zip myfolder/压缩包内容:
myfolder/file1.txtmyfolder/subdir/file2.txt使用 -j 去掉路径:
zip -j archive.zip myfolder/*压缩包内容:
file1.txtfile2.txt5. 查看压缩包内容
# 查看压缩包内容(无需解压)zipinfo archive.zip # 或使用 unzip -l archive.zipunzip 示例
Section titled “unzip 示例”1. 基础解压操作
# 解压 archive.zip 到当前目录(会提示是否覆盖已有文件)unzip archive.zip
# 解压到指定目录 /tmp/extractunzip archive.zip -d /tmp/extract
# 安静模式解压(不输出过程信息)unzip -q large.zip2. 查看与测试压缩包
# 查看压缩包内的文件列表(包含大小、修改时间等)unzip -l archive.zip
# 详细查看压缩包信息(包括压缩率、权限等)unzip -v archive.zip
# 测试压缩包是否损坏(无输出表示正常,有错误会提示)unzip -t archive.zip3. 选择性解压与覆盖控制
# 只解压压缩包中的 file1.txt 和 dir/subfile.txtunzip archive.zip file1.txt dir/subfile.txt
# 解压时排除 temp.log 文件(不提取该文件)unzip archive.zip -x temp.log
# 强制覆盖已存在的文件(不提示)unzip -o update.zip
# 不解压已存在的文件(保留现有文件)unzip -n backup.zip4. 处理特殊压缩包
# 解压加密压缩包(会提示输入密码)unzip secret.zip
# 忽略目录结构,将所有文件解压到当前目录unzip -j structured.zipman zip/man unzip- Info-ZIP 官方网站