gzip命令

gzip 命令 #

gzip命令用于压缩文件,减小文件大小。它使用 Lempel-Ziv 编码(LZ77)算法进行压缩,是 Linux 系统中最常用的压缩工具之一。

语法 #

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

常用选项 #

选项 描述
-c, --stdout 将结果写入标准输出,保留原始文件
-d, --decompress 解压缩文件
-f, --force 强制压缩或解压缩
-k, --keep 保留原始文件
-l, --list 列出压缩文件的信息
-n, --no-name 压缩时不保存原始文件名和时间戳
-N, --name 解压缩时恢复原始文件名和时间戳
-q, --quiet 抑制所有警告
-r, --recursive 递归处理目录
-t, --test 测试压缩文件的完整性
-v, --verbose 显示详细信息
-数字 设置压缩级别(1-9,1 最快但压缩率最低,9 最慢但压缩率最高,默认为 6)

常见用法 #

1. 压缩单个文件 #

gzip file.txt

这将创建file.txt.gz并删除原始文件。

2. 压缩文件并保留原始文件 #

gzip -k file.txt

3. 压缩多个文件 #

gzip file1.txt file2.txt file3.txt

4. 解压缩文件 #

gzip -d file.txt.gz

或使用gunzip命令:

gunzip file.txt.gz

5. 显示压缩文件信息 #

gzip -l file.txt.gz

输出示例:

         compressed        uncompressed  ratio uncompressed_name
                 43                  73  41.1% file.txt

6. 设置压缩级别 #

# 最快压缩,压缩率最低
gzip -1 file.txt

# 最慢压缩,压缩率最高
gzip -9 file.txt

7. 递归压缩目录中的所有文件 #

gzip -r directory/

8. 将压缩结果输出到标准输出 #

gzip -c file.txt > file.txt.gz

这将保留原始文件。

9. 测试压缩文件的完整性 #

gzip -t file.txt.gz

如果文件完好,不会有输出;如果文件损坏,会显示错误消息。

10. 显示详细信息 #

gzip -v file.txt

输出示例:

file.txt:        73.2% -- replaced with file.txt.gz

11. 强制覆盖已存在的压缩文件 #

gzip -f file.txt

12. 压缩标准输入的数据 #

cat file.txt | gzip > file.txt.gz

与其他命令结合使用 #

1. 压缩并通过网络传输文件 #

gzip -c large_file | ssh user@remote "cat > large_file.gz"

2. 解压缩并查看文件内容 #

gzip -dc file.txt.gz | less

或使用zcat命令:

zcat file.txt.gz | less

3. 创建 tar 归档并压缩 #

tar -cf - directory/ | gzip > directory.tar.gz

或直接使用 tar 的 z 选项:

tar -czf directory.tar.gz directory/

4. 比较两个压缩文件的内容 #

gzip -dc file1.gz | diff - <(gzip -dc file2.gz)

提示 #

  • gzip默认会删除原始文件,使用-k选项可以保留原始文件
  • gzip只压缩单个文件,不会将多个文件合并为一个压缩文件(这需要先使用tar
  • 对于已经压缩的文件(如 JPEG、MP3、ZIP 等),gzip的效果不明显
  • 使用-1-9选项可以在压缩速度和压缩率之间取得平衡
  • gzip压缩的文件可以用gunzipgzip -dzcat解压缩
  • 在脚本中使用gzip时,通常使用-c选项并重定向输出,以便更好地控制文件处理
  • gzip不支持密码保护,如果需要加密,可以考虑使用gpg等工具
  • 使用zcatzlesszgrep等命令可以直接操作压缩文件,无需先解压缩
  • 在 Linux 系统中,许多配置文件和日志文件会自动使用gzip进行压缩和轮换