35

我有几个如下所示的目录:

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

对于每个目录,我想将其中的文件压缩为 *.gz 格式,然后删除未压缩的文件。所以最后我们希望得到这样的东西:

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

有没有一种简单的 Unix 方法可以做到这一点?

4

3 回答 3

48
gzip */*.txt

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

于 2009-04-25T13:34:11.830 回答
13

gzip -r 目录 1 目录 2

于 2009-04-25T13:38:03.223 回答
10

即使您有子目录,以下内容也将起作用。例如 dir1/dir2/.../foo.txt

find . -type f -name "*.txt" -exec gzip {} \;
于 2009-04-27T07:29:28.520 回答