解压缩 compress/zip/gzip/bzip2

compress 命令

compress 命令使用 Lempress-Ziv 编码压缩数据文件。compress 是个历史悠久的压缩程序,文件经它压缩后,其名称后面会多出 .Z 的扩展名。

当要解压缩时,可执行 uncompress 指令。但实际上 uncompress 只是 compress 的符号链接,因此解压缩和压缩文件都可以用 compress 完成。

命令用法

$ compress [OPTION]... [FILE]...

常用可选参数

参数

说明

-c

输出结果至标准输出设备 stdout

-d

解压缩文件

-r

进行递归操作

-b RANGE

压缩率,介于 9~16 的数值,预设值为"16",指定愈大的数值,压缩效率就愈高

-f

强制写入文档,若文档已存在,则会被覆盖

-v

显示命令执行过程

zip 命令

zip 命令可以用来压缩文件,或者对文件进行打包操作。zip 是个使用广泛的压缩程序,文件经它压缩后会另外产生具有 .zip 扩展名的压缩文件。

命令用法

$ zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]

zip 默认的行为是把 list 中的文件采用添加或替换的方法压缩到指定的 zipfile 当中,如果 list 指定的是特殊字符 -,则会从标准输入读取并压缩。

如果 zipfilelist 都省略了,则 zip 会把标准输入 stdin 的内容压缩到标准输出 stdout 中去。

常用可选参数

参数

说明

参数

说明

-f

只针对改动文件

-u

只针对改动文件和新文件

-d

从 zipfile 中删除指定内容

-m

将 list 文件压缩并加入到 zipfile 中,删除原始文件

-r

递归处理目录文件

-j

丢弃目录信息,只保存文件名称及其内容(有同名文件会导致失败)

-0

只归档文件,不压缩

-l

压缩文件时,将 LF 换成 CR LF (使用 -ll 则反过来)

-1

最快压缩

-9

最优压缩

-q

静默操作

-v

显示过程信息

-c

为每个压缩到 zipfile 的文件都添加注释

-z

添加压缩文件 zipfile 的注释

-@

从标准输入中读取要 zip 的文件名

-o

将 zipfile 的更改时间同步为它其中更新时间最新的文件的更新时间

-x

排除 list 中列出文件

-i

只处理 list 中列出的文件

-F

尝试修复已损坏的 zipfile

-D

zipfile 内不建立目录

-A

自动解压缩文件

-e

加密

-T

测试压缩文件的完整性

-h2

显示更多帮助信息

使用实例

  1. 压缩指定目录(静默操作)

     gackle@machine:/Project$ zip -r1q test dotnetcore/
     gackle@machine:/Project$
     test.zip    dotnetcore

unzip 命令

unzip 命令用于解压缩由 zip 命令压缩的 .zip 压缩包。

unzip 在这里的其他命令之中显得非常特殊,因为 zip 是没有办法使用自己来解压其压缩的文件,因此需要额外的命令

命令用法

$ unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]

其中:

  • unzip -Z 相当于执行 zipinfo 命令,打印压缩文件信息

  • 默认是在当前目录解压缩那些在 list 列表的文件,排除在 xlist 列表中的文件;若指定了 exdir 则解压到对应的 exdir 目录中

常用可选参数

参数

说明

参数

说明

-p

解压 zipfile 内容到管道 pipe 上

-l

以短格式列出 zipfile 中包含的文件

-f

更新现有的文件而不重新创建

-t

检查 zipfile 是否正确

-u

更新文件,如有必要则创建文件

-z

仅显示压缩文件的注释

-v

执行时显示详细的信息

-T

更新时间戳到最新

-j

丢弃路径信息(不创建目录)

-a

对文本文件进行必要的字符转换

-U

对于非 ASCII 字符做 unicode 转义

-UU

忽略全部 Unicode 字符

-C

对文件名称区分大小写

-L

将文件名称都转为小写

-X

还原 UID/GID 信息

-V

保留VMS的文件版本信息

使用实例

  1. 解压文件到指定目录(test1)

     gackle@machine:/Project$ unzip test.zip -d test1/

gzip 命令

gzip 命令用于解压文件以及压缩文件(默认是原地压缩)。文件经过其压缩过后,其名称会多出 .gz 扩展名。

命令用法

$ gzip [OPTION]... [FILE]...

如果 FILE 没有输入或者 FILE 的值是 -,从标准输入读取。

常用可选参数

参数

说明

-c, --stdout

把压缩后的文件输出到标准输出设备 stdout ,不去更动原始文件

-d, --decompress

解压缩文件

-f, --force

强制压缩文件,无论文件名或硬链接是否存在

-k, --keep

不删除输入文件

-l, --list

列出压缩文件的相关信息

-n, --no-name

压缩文件时,不保存或存储原始的文件名和时间戳

-N, --name

压缩文件时,保存或存储原始的文件名和时间戳

-q, --quiet

不显示警告信息

-r, --recursive

递归处理,将指定目录下的所有文件和子目录一并处理

-v, --verbose

显示执行过程

-1, --fast

最快压缩效率

-9, --best

最优压缩质量

-t, --test

测试压缩文件是否无误

使用实例

  1. 压缩当前目录

     # 列出当前目录文件
     gackle@machine:/Project$ ls
     backend.md  main.cpp  main.exe  main_linux.exe  main.obj
     # 压缩当前目录
     gackle@machine:/Project$ gzip *
     gackle@machine:/Project$ ls
    
     backend.md.gz  main.cpp.gz  main.exe.gz  main_linux.exe.gz  main.obj.gz
     # 不修改源文件
     gackle@machine:/Project$ gzip -kv *
     backend.md:      58.6% -- replaced with backend.md.gz
     main.cpp:        45.4% -- replaced with main.cpp.gz
     main.exe:        47.0% -- replaced with main.exe.gz
     main_linux.exe:  66.8% -- replaced with main_linux.exe.gz
     main.obj:        76.3% -- replaced with main.obj.gz
    
     gackle@machine:/Project$ ls
     backend.md     main.cpp     main.exe     main_linux.exe     main.obj
     backend.md.gz  main.cpp.gz  main.exe.gz  main_linux.exe.gz  main.obj.gz
  2. 解压文件

     gackle@machine:/Project$ gzip -dv *
         backend.md.gz:   58.6% -- replaced with backend.md
         main.cpp.gz:     45.4% -- replaced with main.cpp
         main.exe.gz:     47.0% -- replaced with main.exe
         main_linux.exe.gz:       66.8% -- replaced with main_linux.exe
         main.obj.gz:     76.3% -- replaced with main.obj
  3. 显示压缩文件信息

     gackle@machine:/Project$ gzip -l *
             compressed        uncompressed  ratio uncompressed_name
                 1948                4630    58.6%     backend.md
                 444                 764     45.4%     main.cpp
                 118954              224256  47.0%     main.exe
                 3059                9112    66.8%     main_linux.exe
                 35433              149686   76.3%     main.obj
                 159838             388448   58.9%     (totals)

bzip2 命令

bzip2 命令用于创建和管理(包括解压缩) .bz2 格式的压缩包。

命令用法

$ bzip2 [flags and input files in any order]

常用可选参数

参数

说明

-d, --decompress

解压缩文件

-z, --compress

压缩文件

-t, --test

测试压缩文件的完整性

-k, --keep

保持输入文件不变更(被删除)

-f, --force

覆写已存在的输出文件

-v, --verbose

显示命令执行过程

-c, --stdout

输出到标准输出 stdout

-1 ... -9

设置压缩块大小为 100K ~ 900K

-s, --small

使用最小内存(最大占用为 2500K)

--fast

等同于 -1

--best

等同于 -9

使用实例

  1. 压缩当前目录的文件(不删除源文件)

     gackle@machine:/Project$ bzip2 -k *
    
     gackle@machine:/Project$ ls
    
     backend.md  backend.md.bz2  main.cpp  main.cpp.bz2  main.exe  main.exe.bz2  main_linux.exe  main_linux.exe.bz2  main.obj  main.obj.bz2
  2. 显示压缩文件内容

     gackle@machine:/Project$ bzip2 -dc *.bz2
     # 等同于
     gackle@machine:/Project$ bzcat *bz2

Last updated