7z(7-Zip / p7zip)命令用于创建、更新、查看与解压压缩包,常见格式包括 7z、zip、tar 等。
$ 7z <命令> [<开关>..] <压缩包名称> [<文件名>..]
常见命令:
a 添加文件到压缩包(创建/追加)x 解压(保留完整路径)e 解压(不保留目录结构)l 列出压缩包内容t 测试压缩包完整性安装:
# Debian/Ubuntu
$ sudo apt install p7zip-full
# RHEL/CentOS/Fedora
$ sudo yum install p7zip p7zip-plugins
# macOS (Homebrew)
$ brew install sevenzip
| 参数 | 描述 | 参数 | 描述 |
|---|---|---|---|
a | add: 添加/创建压缩包 | x | extract: 解压(保留完整路径) |
e | extract: 解压(不保留目录名) | l | list: 列出压缩包内容 |
t | test: 测试压缩包完整性 | h | hash: 计算文件哈希 |
u | update: 更新压缩包内文件 | d | delete: 从压缩包中删除文件 |
rn | rename: 重命名压缩包内文件 | i | info: 查看支持的格式信息 |
b | benchmark: 性能测试 |
| :- | :- |
|---|---|
| 基本语法 | 7z <命令> [开关...] 压缩包 [文件...] |
| 创建 7z 压缩包 | 7z a -t7z archive.7z 文件/目录... |
| 创建 zip 压缩包 | 7z a -tzip archive.zip 文件/目录... |
| 解压(保留路径) | 7z x archive.7z -o输出目录 |
| 解压(不保留目录) | 7z e archive.7z -o输出目录 |
| 列出内容 | 7z l archive.7z |
| 测试完整性 | 7z t archive.7z |
| 计算哈希 | 7z h -scrcSHA256 文件... |
| 创建分卷压缩包 | 7z a archive.7z 大文件.iso -v1g |
| 参数 | 描述 | 参数 | 描述 |
|---|---|---|---|
-- | 停止解析后续参数为开关 | -t{Type} | 指定压缩格式(如 -t7z / -tzip),默认为7z |
-o{目录} | 指定输出目录(解压) | -p{密码} | 设置密码 |
-r[-|0] | 递归子目录(-r / -r- / -r0) | -mx[N] | 压缩等级:-mx0(不压缩) -mx1(最快)… -mx9(最强) |
-mmt[N] | 线程数(如 -mmt4) | -y | 所有询问默认回答 Yes |
-ao{a|s|t|u} | 覆盖策略:a 全覆盖 / s 跳过 / t 仅覆盖旧文件 / u 自动重命名 | ||
-v{Size}[b|k|m|g] | 分卷(如 -v1g / -v500m) | -sdel | 压缩后删除源文件 |
-sfx[{name}] | 生成自解压压缩包(SFX) | -bd | 关闭进度指示器 |
-bb[0-3] | 输出日志等级 | -bt | 输出执行时间统计 |
-so | 输出到 stdout | -si[{name}] | 从 stdin 读入数据 |
-scrc[CRC64|SHA1|SHA256|*] | 指定校验/哈希算法(用于 x/e/h) | @listfile | 从列表文件读取文件名 |
-i... | 仅包含匹配项(include) | -x... | 排除匹配项(exclude) |
-slt | l 命令输出技术信息 | -spf | 使用绝对路径 |
$ 7z a -t7z archive.7z file1 file2 dir1/
$ 7z a big.7z big.iso -v1g
压缩时会自动根据文件名后缀判断压缩格式,所以可以忽略 -t 开关
$ 7z a archive.7z dir1/ -mx9 -mmt4
$ 7z a archive.7z example/ '-x!example/node_modules/*' '-x!example/dist/*'
$ 7z a archive.7z @files.txt
files.txt 每行一个文件路径(相对或绝对路径均可)。
$ 7z a archive.7z dir1/ -sdel
$ 7z x archive.7z
$ 7z x archive.7z -o./output
$ 7z e archive.7z -o./output
$ 7z x archive.7z -o./output -aoa
$ 7z x archive.7z '*.log' -o./output
$ 7z l archive.7z -slt
$ 7z t archive.7z
$ 7z h -scrcSHA256 file1 file2