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

时间:2011-06-06 23:02:01

标签: linux compression gzip

我希望在保留原件的同时在目录中gzip多个文件(多个.gz文件)。

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

find . -type f -name "*cache.html" -exec gzip {} \;

gzip *cache.html

但不保留原件。我试过了

 find . -type f -name "*cache.html" -exec gzip -c {} > {}.gz

但是只创建了一个{} .gz文件。有一种简单的方法可以做到这一点吗?

4 个答案:

答案 0 :(得分:9)

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

for f in *cache.html ; do gzip -c "$f" > "$f.gz" ; done

如果我知道文件名是“理智的”,我会在论证周围留下"",因为我很懒。我的文件名通常都是理智的。但剧本并没有这么奢侈。

答案 1 :(得分:9)

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

find . -type f -name "*cache.html" -exec sh -c "gzip < {} > {}.gz" \;

答案 2 :(得分:5)

<强> -k, --keep

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

find . -type f -name "*cache.html" -exec gzip -k {} \;
gzip -k *cache.html

或简单地递归所有文件:

gzip -kr .

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

答案 3 :(得分:0)

由于你有多个文件,GNU Parallel可能很有用:

find . -type f -name "*cache.html" | parallel gzip '<{} >{}.gz'

观看介绍视频以获得快速介绍: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

相关问题