Skip to content

zip

zipunzip最初是 PKZIP 是在 MS-DOC 上实现的,之后开源社区将 PKZIP 移植到了 Linux 上这个就是 InfoZIP 项目,该项目提供了 zip/unzip 两个方法来分别进行压缩和解压缩。

Tips

目前通常不需要在使用这两个命令了,7zip能够完美地替代他。不过大多数发行版这两个是内置的。

zip

Bash
zip [options] <archive_file> <inpath> <inpath> ...
# options: zip 选项
# archive_file : 新的或现有的 zip 存档(更新)
# inpath : 要压缩的文件或文件夹,可以包含通配符

他和 tar 一样 options 具有操作和选项两种形式,操作同样涉及增删改查:

  • append: 添加,这个是默认操作
  • update/-u: 更新,同样对比两者来决定是否更新 zip 中的文档
  • freshen/-f: 仅报告文件是否更新(-u 相当于 -f 后添加)
  • delete/-d: 删除 zip 中存档的文件
  • copy/-U: 相当于合并两个 zip 存档,不过他并不会修改原有的 zip 存档而是必须通过 --out 选项指定要输出的新的 zip 存档
Bash
zip -d foo.zip foo/tom/junk foo/harry/\*\*.o

其他选项:

  • -r/--recurse-paths: 递归遍历整个目录
  • -i <files>/--include <files>: 指定要压缩的文件
  • -o <out-file>/--out <out-fine>: 指定要输出的文件, 通常在更新、删除、复制操作时不修改源文件来进行操作
  • -P <password>/--password <password>: 指定密码
  • -m/--move: 删除已经写入存档的文件(实际上就是移动),这个对于缓解磁盘空间有用处但是可能会有潜在的风险
  • -v/--verbose: 详细信息
  • -s <splitsize>/--split-size <splitsize>: 指定切分大小,之后会获取 archive.z01 archive.z02 ... archive.zip 来拆分压缩包,大小由k(kB)、m(MB)、g(GB)、t(TB)指定
  • -<0~9>: 压缩等级,默认是 -6
Bash
# 压缩时删除
zip -rm foo foo/tom
# 拆分压缩
zip -s 2g -r split.zip foo

unzip

unzip 用于查看以及解压缩 zip 档案。

Bash
unzip [options] archive.zip [-d exdir]
  • -d: 指定要输出的目录
  • -l: 列出存档中文件内容
  • -n: 永远不要覆盖现有文件,如果文件存在则跳过该文件
  • -P <password>: 指定密码
  • -q: 安静模式, -qq 更加安静