单独Gzip多个文件并保留原始文件

Cha*_* L. 12 linux compression gzip

我期待在保留原始文件的同时gzip目录中的多个文件(多个.gz文件).

我可以使用以下命令执行单个文件:

find . -type f -name "*cache.html" -exec gzip {} \;
Run Code Online (Sandbox Code Playgroud)

要么

gzip *cache.html
Run Code Online (Sandbox Code Playgroud)

但都没有保留原件.我试过了

 find . -type f -name "*cache.html" -exec gzip -c {} > {}.gz
Run Code Online (Sandbox Code Playgroud)

但那只做了一个{} .gz文件.有一个简单的方法吗?

sar*_*old 9

我会使用bash(1)简单的for构造:

for f in *cache.html ; do gzip -c "$f" > "$f.gz" ; done
Run Code Online (Sandbox Code Playgroud)

如果我知道文件名是"理智的",那么我就会放弃""参数,因为我很懒.我的文件名通常都是理智的.但脚本没有那么奢侈.


Kot*_*lar 9

>在最后一个命令中由运行的同一个shell解析find.使用嵌套shell:

find . -type f -name "*cache.html" -exec sh -c "gzip < {} > {}.gz" \;
Run Code Online (Sandbox Code Playgroud)


Cir*_*四事件 5

-k, --keep

gzip 1.6(2013年6月)添加了该-k, --keep选项,现在您可以:

find . -type f -name "*cache.html" -exec gzip -k {} \;
gzip -k *cache.html
Run Code Online (Sandbox Code Playgroud)

或简单地递归所有文件:

gzip -kr .
Run Code Online (Sandbox Code Playgroud)

发现于:https://unix.stackexchange.com/questions/46786/how-to-tell-gzip-to-keep-original-file