Linux的unzip

Linux的unzip

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、参数使用优先级

  1. 核心指令(a/x/l/t等)必须放在最前;
  2. 格式参数(-txxx)紧跟核心指令;
  3. 辅助选项(-o/-p/-r等)放在后面;
  4. 最后指定压缩/解压的文件/目录。

常用场景

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/`
相关推荐
哈基咪怎么可能是AI1 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行2 天前
Linux和window共享文件夹
linux
木心月转码ing2 天前
WSL+Cpp开发环境配置
linux
崔小汤呀3 天前
最全的docker安装笔记,包含CentOS和Ubuntu
linux·后端
何中应3 天前
vi编辑器使用
linux·后端·操作系统
何中应3 天前
Linux进程无法被kill
linux·后端·操作系统
何中应3 天前
rm-rf /命令操作介绍
linux·后端·操作系统
何中应3 天前
Linux常用命令
linux·操作系统
葛立国3 天前
从 / 和 /dev 说起:Linux 文件系统与挂载点一文理清
linux
哇哈哈20214 天前
信号量和信号
linux·c++