linux系统中gzip是一款轻量高效的文件压缩工具,默认采用DEFLATE压缩算法,生成的压缩文件后缀为.gz,仅支持对单个文件进行压缩,无法直接压缩目录,若需要压缩目录可以配合tar命令使用。

gzip命令基础语法
gzip命令的基本格式如下:
gzip [参数] 文件名
常用参数说明
以下是gzip命令的常用参数及作用:
| 参数 | 作用说明 |
|---|---|
| -c | 将压缩结果输出到标准输出,保留原文件,通常配合重定向使用 |
| -d | 解压gzip格式的文件,等价于gunzip命令 |
| -f | 强制压缩或解压,覆盖已存在的同名文件不提示 |
| -k | 压缩或解压时保留原文件,部分linux版本支持该参数 |
| -l | 列出压缩文件的相关信息,包括压缩前后大小、压缩比等 |
| -r | 递归处理目录下的所有文件,逐个压缩目录中的文件 |
| -v | 显示压缩或解压过程的详细信息 |
| -[1-9] | 设置压缩级别,1为最快压缩(压缩率低),9为最慢压缩(压缩率高),默认是6 |
压缩文件操作示例
1. 压缩单个文件
直接对目标文件执行gzip命令,会生成.gz后缀的压缩文件,同时删除原文件:
# 压缩test.txt文件,生成test.txt.gz,原test.txt会被删除 gzip test.txt # 压缩时显示详细信息 gzip -v test.txt # 设置最高压缩级别压缩文件 gzip -9 test.txt
2. 压缩时保留原文件
如果需要保留原文件,可以使用-c参数配合重定向,或者使用-k参数(部分系统支持):
# 使用-c参数重定向输出,保留原文件 gzip -c test.txt > test.txt.gz # 使用-k参数保留原文件(部分linux版本支持) gzip -k test.txt
3. 批量压缩文件
可以传入多个文件名批量压缩,也可以使用通配符匹配文件:
# 批量压缩多个文件 gzip file1.txt file2.txt file3.txt # 压缩当前目录下所有.txt文件 gzip *.txt # 递归压缩dir目录下所有文件 gzip -r dir/
解压文件操作示例
1. 解压单个gzip文件
使用-d参数或者gunzip命令解压文件,解压后会删除原.gz文件:
# 使用-d参数解压 gzip -d test.txt.gz # 使用gunzip命令解压 gunzip test.txt.gz # 解压时保留原压缩文件 gzip -dc test.txt.gz > test.txt # 强制解压覆盖已存在文件 gzip -df test.txt.gz
2. 解压时保留原压缩文件
同样可以使用-c参数或者-k参数保留原压缩文件:
# 重定向输出保留原压缩文件 gzip -dc test.txt.gz > test.txt # 使用-k参数保留原压缩文件(部分系统支持) gzip -dk test.txt.gz
其他常用操作
查看压缩文件内容
不需要解压文件,可以直接查看gzip压缩文件的内容:
# 查看压缩文件内容 zcat test.txt.gz # 分页查看压缩文件内容 zless test.txt.gz
查看压缩文件信息
使用-l参数可以查看压缩文件的大小、压缩比等信息:
gzip -l test.txt.gz
注意事项
- gzip仅支持压缩单个文件,无法直接压缩目录,如果需要压缩目录,需要先使用tar命令打包,再用gzip压缩,或者使用
tar -zcvf命令直接打包压缩。 - gzip压缩后会默认删除原文件,解压后会默认删除原压缩文件,如果需要保留原文件,记得使用对应的参数。
- 压缩级别越高,压缩率越好但耗时越长,日常使用默认级别即可,对压缩率要求高的场景可以使用9级压缩。