Linux的unzip
- unzip
- 常用场景
-
- zip文档
-
- 1、添加指定路径下文件夹内的所有文件到一个压缩包
- 2、解压到指定目录
- 3、查看包内的txt文件
- [4、递归压缩 `/tmp` 所有文件,使用最高压缩级别](#4、递归压缩
/tmp所有文件,使用最高压缩级别) - [5、自动确认所有提示,用密码123解压到 `/tmp/ext`](#5、自动确认所有提示,用密码123解压到
/tmp/ext) - [6、压缩时排除 `.log` 和 `.tmp` 文件](#6、压缩时排除
.log和.tmp文件) - 7、解压Windows生成的中文文件名7z包,避免乱码
- 7z文档
-
- [1、生成 ZIP 格式包,压缩级别5](#1、生成 ZIP 格式包,压缩级别5)
unzip
1、作用
7z 是 Linux 下功能强大的压缩/解压工具(基于 p7zip),支持 7z、ZIP、RAR、TAR、GZ 等几乎所有压缩格式,其参数分为核心操作指令 和辅助选项
2、格式
bash
7z
3、参数
a、核心操作指令(必选,指定7z要执行的动作)
这类参数是 7z 的核心,必须放在命令首位,决定"压缩/解压/查看"等核心行为:
| 参数 | 全称 | 作用 | 示例 |
|---|---|---|---|
a |
Add | 创建压缩包(添加文件/目录到7z包) | 7z a test.7z /tmp/file1.txt /tmp/doc |
x |
eXtract | 按原目录结构解压(推荐,保留子目录) | 7z x test.7z -o/tmp/extract |
e |
Extract | 平铺解压(所有文件解压到同一目录,不保留子目录) | 7z e test.7z |
l |
List | 查看压缩包内容(不解压,仅解析) | 7z l test.7z |
t |
Test | 测试压缩包完整性(检查是否损坏) | 7z t test.7z |
u |
Update | 更新压缩包内的文件(替换旧文件/添加新文件) | 7z u test.7z /tmp/new_file.txt |
d |
Delete | 删除压缩包内的指定文件/目录 | 7z d test.7z doc/old.txt |
r |
Repair | 修复损坏的压缩包(生成修复后的新包) | 7z r broken.7z |
b、常用辅助选项(可选,细化操作行为)
这类参数配合核心指令使用,调整压缩/解压的细节规则:
| 参数 | 作用 | 适用场景 | 示例 |
|---|---|---|---|
-o |
指定输出目录(解压/修复时),-o和目录间无空格 | 解压到指定路径 | 7z x test.7z -o/tmp/extract |
-p |
指定压缩/解压密码(-p和密码间无空格) | 加密/解密压缩包 | 7z x encrypted.7z -p123456 |
-r |
递归处理子目录(压缩/解压时包含所有子文件) | 处理多层目录 | 7z a test.7z /tmp/ -r |
-y |
所有提示默认"是"(无需手动确认,批量操作) | 自动化脚本 | 7z x test.7z -y |
-mx |
设置压缩级别(x=0~9,0=无压缩,9=最高压缩,默认5) | 调整压缩率/速度 | 7z a test.7z /tmp/ -mx9(极致压缩) |
-aoa |
覆盖已有文件(解压时强制覆盖) | 替换旧文件 | 7z x test.7z -aoa |
-aon |
不覆盖已有文件(解压时跳过已存在文件) | 保留旧文件 | 7z x test.7z -aon |
-ax |
排除指定文件/目录(压缩时) | 过滤不需要的文件 | 7z a test.7z /tmp/ -ax!*.log |
-si |
从标准输入读取数据(压缩) | 管道传数据 | `cat file.txt |
-so |
解压到标准输出(不解压到磁盘) | 直接读取压缩包内文件 | `7z x test.7z -so file.txt |
-bt |
显示执行时间统计(压缩/解压耗时) | 性能测试 | 7z a test.7z /tmp/ -bt |
-v |
分卷压缩(指定每个分卷大小) | 大文件拆分 | 7z a test.7z /tmp/ -v100M(每卷100M) |
c、格式专属选项(指定压缩格式)
7z 默认生成 .7z 包,可通过 -t 参数指定其他格式(如 ZIP/RAR):
| 参数 | 作用 | 示例 |
|---|---|---|
-t7z |
生成7z格式(默认) | 7z a -t7z test.7z /tmp/ |
-tzip |
生成ZIP格式 | 7z a -tzip test.zip /tmp/ |
-ttar |
生成TAR格式 | 7z a -ttar test.tar /tmp/ |
-tgzip |
生成GZIP格式 | 7z a -tgzip test.gz /tmp/ |
d、冷门但实用的参数
| 参数 | 作用 |
|---|---|
-scsUTF-8 |
指定文件名编码为UTF-8(解决中文乱码) |
-scsGBK |
指定文件名编码为GBK(兼容Windows生成的压缩包) |
-mmt |
启用多线程压缩(加速,-mmt8 表示8线程) |
-md |
设置字典大小(越大压缩率越高,占用内存越多,如 -md64m) |
4、参数使用优先级
- 核心指令(a/x/l/t等)必须放在最前;
- 格式参数(-txxx)紧跟核心指令;
- 辅助选项(-o/-p/-r等)放在后面;
- 最后指定压缩/解压的文件/目录。
常用场景
zip文档
1、添加指定路径下文件夹内的所有文件到一个压缩包
bash
# 将 `/tmp` 下所有文件添加到 `test.7z`(创建压缩包)
7z a test.7z /tmp/*
2、解压到指定目录
bash
# 将 `test.7z` 按目录结构解压到 `/tmp/ext`
7z x test.7z -o/tmp/ext
3、查看包内的txt文件
bash
# 仅查看包内所有 `.txt` 文件。
7z l test.7z "*.txt"
4、递归压缩 /tmp 所有文件,使用最高压缩级别
bash
7z a test.7z /tmp/ -mx9 -r
5、自动确认所有提示,用密码123解压到 /tmp/ext
bash
7z x test.7z -o/tmp/ext -y -p123
6、压缩时排除 .log 和 .tmp 文件
bash
7z a test.7z /tmp/ -ax!*.log -ax!*.tmp
7、解压Windows生成的中文文件名7z包,避免乱码
bash
7z x test.7z -scsGBK
7z文档
1、生成 ZIP 格式包,压缩级别5
bash
7z a -tzip -mx5 test.zip /tmp/`