Linux gzip命令

简介

gzip是GNU项目中一个流行的文件压缩工具,使用LZ77算法对文件进行压缩,通常可以将文本文件压缩到原大小的60-70%。压缩后的文件扩展名为.gz

特点:gzip压缩速度快、压缩率高,特别适合文本文件。压缩后会删除原始文件,除非使用-k选项保留。

语法

gzip [选项] [文件...]

常用选项

选项 说明
-d 解压缩文件(等同于gunzip命令)
-c 将压缩或解压的内容输出到标准输出,不改变原文件
-k 保留原始文件(默认会删除原文件)
-l 列出压缩文件的压缩信息
-r 递归处理目录和子目录中的所有文件
-v 显示详细的压缩/解压信息
-# 指定压缩级别(1-9,1最快压缩率最低,9最慢压缩率最高)
-f 强制压缩,即使文件已存在或链接
-t 测试压缩文件的完整性

使用示例

示例1:基本压缩

压缩单个文件:

# 创建测试文件
echo "This is a test file for gzip compression." > test.txt

# 压缩文件
gzip test.txt

# 查看结果
ls -l test.txt.gz
示例2:保留原始文件

压缩文件时保留原始文件:

# 创建文件
echo "Original content" > original.txt

# 压缩并保留原文件
gzip -k original.txt

# 查看文件
ls -l original.txt original.txt.gz
示例3:指定压缩级别

使用不同的压缩级别:

# 创建大文件
dd if=/dev/zero of=largefile bs=1M count=10 2>/dev/null

# 使用最快压缩(级别1)
gzip -1 largefile

# 创建另一个文件
dd if=/dev/zero of=largefile2 bs=1M count=10 2>/dev/null

# 使用最高压缩率(级别9)
gzip -9 largefile2

# 比较大小
ls -lh largefile*.gz
示例4:递归压缩目录

压缩目录中的所有文件:

# 创建测试目录和文件
mkdir testdir
echo "File 1" > testdir/file1.txt
echo "File 2" > testdir/file2.txt
mkdir testdir/subdir
echo "File 3" > testdir/subdir/file3.txt

# 递归压缩
gzip -r testdir

# 查看结果
find testdir -name "*.gz" | xargs ls -l
示例5:查看压缩信息

查看压缩文件的详细信息:

# 压缩文件
echo "Test data" > data.txt
gzip data.txt

# 查看压缩信息
gzip -l data.txt.gz
示例6:解压文件

解压.gz文件:

# 解压文件
gzip -d data.txt.gz

# 或使用gunzip命令
# gunzip data.txt.gz
示例7:压缩输出到标准输出

压缩但不生成.gz文件,输出到标准输出:

# 压缩并输出到屏幕(显示乱码)
gzip -c test.txt

# 压缩并保存到另一个文件
gzip -c test.txt > test_compressed.gz

# 验证
file test_compressed.gz

高级用法

1. 与tar结合使用

gzip常与tar命令结合压缩目录:

# 创建目录并打包压缩
mkdir myproject
echo "Source code" > myproject/app.py
echo "README" > myproject/README.md

# 打包并压缩(经典用法)
tar czf myproject.tar.gz myproject/

# 解压.tar.gz文件
tar xzf myproject.tar.gz
2. 批量压缩和解压

使用循环处理多个文件:

# 批量压缩所有.txt文件
for file in *.txt; do
    gzip "$file"
done

# 批量解压所有.gz文件
for file in *.gz; do
    gzip -d "$file"
done
3. 管道操作

通过管道与其他命令结合:

# 压缩命令输出
ls -la | gzip > listing.gz

# 解压并查看
gzip -d -c listing.gz | less

# 压缩日志文件并保留原始
cat access.log | gzip > access.log.gz

常用参数组合

命令 说明
gzip -v filename 压缩文件并显示详细信息
gzip -dk filename.gz 解压文件并保留压缩包
gzip -l *.gz 查看多个压缩文件的信息
gzip -9c file.txt > file.txt.gz 使用最高压缩率并输出到文件
gzip -t archive.gz 测试压缩文件完整性

注意事项

  • gzip只能压缩文件,不能压缩目录(需配合tar)
  • 默认会删除原始文件,使用-k选项保留
  • gzip压缩的文件可以用gunzip解压
  • 压缩级别越高,CPU使用越多,压缩时间越长
  • gzip不支持分卷压缩
  • 对于已经高度压缩的文件(如jpg、mp4),gzip效果有限

相关命令

gunzip

gzip的解压工具,功能与gzip -d相同

zcat

查看.gz文件内容,不解压

tar

打包工具,常与gzip结合使用