Loading... # zip 用法备忘录 因为最近流水线相关的工具开发用到 `zip` 比较频繁,因此这里简单记录一下 `zip` 指令的用法。因为现在基本上想查啥都能直接用 LMM 来查(虽然偶尔会出现奇怪的幻觉),而且网上资料多,所以只记录常用的几个。 ## 基本语法 ```shell zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩包名][文件...][-i <范本样式>][-x <范本样式>] ``` 但是通常的场景下不需要用到那么多参数,通常我们是这样使用: ```shell zip [选项] output_file.zip 要压缩的文件 [另一个要压缩的文件 ...] ``` 例如我想要压缩某个文件夹并保存为`test.zip`: ```shell zip -q -r test.zip ./test ``` 压缩多个文件就: ```shell zip -q archive.zip file1.txt file2.txt file3.txt ``` 此处涉及到的 `-q` 以及 `-r` 是 `zip` 指令的选项,下面另外进行记录。 ### zip 的常用选项记录 | 选项 | 简介 | 用法 | 例子 | | ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | --- | | `-d` | `delete`,使用这个选项可以让用户直接删除压缩包中指定的文件(可以用通配符等方式指定多个文件) | `zip -d [压缩包名.zip] [文件名]` | `zip -d archive.zip '*.bak'` 删除 `archive.zip` 中所有 `.bak` 结尾的文件 | | `-m` | `move`,用来将压缩包外的文件或目录移动进压缩包内,可一次性移动多个文件。在移动完文件后会将源文件/目录删除。 如果移动的是文件,文件所在文件夹在移动指令执行完后变成空文件夹,那么这个文件夹也会被删除。需要谨慎使用这个指令,因为此指令会永久删除源文件。 | `zip -m [压缩包名.zip] [文件名]` | `zip -rm archive.zip directory/` 递归压缩 `directory` 目录下的所有文件,并从源文件中移除 | | `-r` | `recursive`,用来压缩文件夹。如果你想压缩一个文件夹那么必须用 `-r`,否则 `zip` 压缩出来的压缩包只会包含一个空文件夹。这是因为 `zip` 原本设计是只用来压缩一个文件,所以如果希望压缩包的内容包括文件夹下所有的文件,需要调用这个选项来递归对每个文件调用 `zip`。 | `zip -r [压缩包名.zip] [目录名]` | `zip -r documents.zip documents/` 压缩 `documents` 目录及其子目录下的所有文件: | | `-x` | `eXclude`,排除某些文件。主要用于在压缩文件夹的时候单独挑出某些文件不放入到压缩包中。 | `zip -r [压缩包名.zip] -x [要排除的文件名] [目录名]` | `zip -r backup.zip ./ -x .git/` 压缩当前目录下的所有文件和子目录,但排除 `.git` 目录 | | `-q` | `quite`,不输出指令执行过程中产生的 log | `zip -q [压缩包名] [文件]` | 主要是流水线 CI 之类的场合用得比较多,免得执行一次命令打印出大量的信息,污染 log | | `-h` | `help`,查参数用 | `zip -h` | 虽然在现在这个 LLM 时代可能有点鸡肋,但是毕竟是官方文档,遇到问题还是以官方文档为准 | 当然还有很多其他的指令,但是这里只记录我认为比较常用的几个。 ## 解压 `unzip` ```shell unzip [options] file.zip ``` 例如: ```shell unzip file.zip ``` 就可以解压到当前目录。 ### unzip 常用选项 |选项|简介|用法|例子| | - | - | - | - | | -l | 列出压缩包中的文件内容和目录 | `unzip -l [压缩包名]` | `unzip -l file.zip` | | -d | 将压缩包解压到指定目录 | `unzip -d [目标路径] [压缩包名]` | `unzip -d /path/to/extract file.zip` | | -o | 解压,如果目标路径已经有同名文件那么覆盖文件 | `unzip -o [压缩包名]` | `unzip -o file.zip` | ## 参考 1. [ZIP command in Linux with examples](https://www.geeksforgeeks.org/zip-command-in-linux-with-examples/) 2. [Linux zip 命令](https://www.runoob.com/linux/linux-comm-zip.html) 3. [zip(1) - Linux man page](https://linux.die.net/man/1/zip) 4. GPT-4o 辅助查询部分内容 最后修改:2025 年 04 月 05 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 随缘