gzip -r 递归压缩目录下所有可读普通文件,为每个文件生成单独.gz文件并默认删除原文件;加-k保留原文件,-v显示压缩率;它不打包目录,需tar配合实现归档压缩。

gzip 本身不能直接压缩目录,但可以用 -r(recursive)选项递归处理指定目录下的所有普通文件——它会逐个找到目录树里的每个文件,分别压缩成 .gz 文件,原文件默认被删除。
递归压缩目录下所有文件
执行命令:
-
gzip -r /path/to/dir—— 压缩该目录及其所有子目录中**可读的普通文件**(跳过目录、设备文件、符号链接等) - 压缩后,每个文件变成
filename.gz,与原文件同级存放,比如dir/a.txt→dir/a.txt.gz - 原文件(如
a.txt)会被自动删除
保留原始文件不删除
加 -k(keep)参数即可:
gzip -rk /path/to/dir- 这样
a.txt和a.txt.gz会同时存在
显示压缩过程和比例
加 -v(verbose)更直观:
gzip -rvk /path/to/dir- 终端会逐行输出类似:
dir/a.txt: 62.3%,表示压缩率
注意几个关键限制
gzip -r 不是“打包整个目录”,而是:
- ❌ 不会生成单个 .gz 文件,而是为每个文件单独生成 .gz
- ❌ 不处理目录本身(目录结构不会被压缩或归档)
- ❌ 跳过已压缩文件(如已有 .gz/.bz2 文件)、不可读文件、特殊文件
- ✅ 若需真正打包+压缩整个目录,请用
tar -zcvf archive.tar.gz dir/











