gzip是GNU项目中一个流行的文件压缩工具,使用LZ77算法对文件进行压缩,通常可以将文本文件压缩到原大小的60-70%。压缩后的文件扩展名为.gz。
-k选项保留。
gzip [选项] [文件...]
| 选项 | 说明 |
|---|---|
-d |
解压缩文件(等同于gunzip命令) |
-c |
将压缩或解压的内容输出到标准输出,不改变原文件 |
-k |
保留原始文件(默认会删除原文件) |
-l |
列出压缩文件的压缩信息 |
-r |
递归处理目录和子目录中的所有文件 |
-v |
显示详细的压缩/解压信息 |
-# |
指定压缩级别(1-9,1最快压缩率最低,9最慢压缩率最高) |
-f |
强制压缩,即使文件已存在或链接 |
-t |
测试压缩文件的完整性 |
压缩单个文件:
# 创建测试文件
echo "This is a test file for gzip compression." > test.txt
# 压缩文件
gzip test.txt
# 查看结果
ls -l test.txt.gz
压缩文件时保留原始文件:
# 创建文件
echo "Original content" > original.txt
# 压缩并保留原文件
gzip -k original.txt
# 查看文件
ls -l original.txt original.txt.gz
使用不同的压缩级别:
# 创建大文件
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
压缩目录中的所有文件:
# 创建测试目录和文件
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
查看压缩文件的详细信息:
# 压缩文件
echo "Test data" > data.txt
gzip data.txt
# 查看压缩信息
gzip -l data.txt.gz
解压.gz文件:
# 解压文件
gzip -d data.txt.gz
# 或使用gunzip命令
# gunzip data.txt.gz
压缩但不生成.gz文件,输出到标准输出:
# 压缩并输出到屏幕(显示乱码)
gzip -c test.txt
# 压缩并保存到另一个文件
gzip -c test.txt > test_compressed.gz
# 验证
file test_compressed.gz
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
使用循环处理多个文件:
# 批量压缩所有.txt文件
for file in *.txt; do
gzip "$file"
done
# 批量解压所有.gz文件
for file in *.gz; do
gzip -d "$file"
done
通过管道与其他命令结合:
# 压缩命令输出
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 |
测试压缩文件完整性 |
-k选项保留gzip的解压工具,功能与gzip -d相同
查看.gz文件内容,不解压
打包工具,常与gzip结合使用