使用Gzip单独压缩多个文件

nev*_*int 27 unix linux compression gzip

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

dir1/
  |_foo.txt
  |_bar.txt
dir2/
  |_qux.txt
  |_bar.txt
Run Code Online (Sandbox Code Playgroud)

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

 dir1/
   |_foo.gz
   |_bar.gz
 dir2/
   |_qux.gz
   |_bar.gz
Run Code Online (Sandbox Code Playgroud)

有简单的Unix方法吗?

Jul*_*ano 39

gzip */*.txt
Run Code Online (Sandbox Code Playgroud)

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

  • 只是为了澄清,因为它不明显:gzip将删除未压缩的文件本身. (8认同)

dog*_*ane 10

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

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

  • 你也可以做`gzip ./**/*.txt`,它会递归到当前目录中的所有目录,压缩所有文本文件,并删除原件. (2认同)

vov*_*ick 8

gzip -r dir1 dir2