使用Gzip单独压缩多个文件

36

我有几个看起来像这样的目录:

dir1/
  |_foo.txt
  |_bar.txt
dir2/
  |_qux.txt
  |_bar.txt

对于每个目录,我想要将其中的文件压缩成*.gz格式,然后删除未压缩的文件。因此最终我们希望得到以下结果:

 dir1/
   |_foo.gz
   |_bar.gz
 dir2/
   |_qux.gz
   |_bar.gz

有没有一种简单的Unix方式来做到这一点?

3个回答

51
gzip */*.txt

但每个文件的扩展名将为“.txt.gz”,因为gzip使用它来知道原始文件名。


11
仅供澄清,因为这并不明显:gzip会删除未压缩的文件本身。 - ypnos
有没有不删除原文件的方法?我目前正在使用-c标志(gzip -9 -c style.css > style.css.gz)。 - ansiart
请参见以下网址: https://dev59.com/jW025IYBdhLWcg3wChKb - Charles L.
-k 转为 --keep - J.J

13

gzip -r dir1 dir2


10

以下代码可以在有子目录的情况下工作,例如 dir1/dir2/.../foo.txt

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

3
您也可以执行 gzip ./**/*.txt 命令,它将递归压缩当前目录及其所有子目录中的所有文本文件,并删除原始文件。 - thekingoftruth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接