我有几个看起来像这样的目录:
dir1/
|_foo.txt
|_bar.txt
dir2/
|_qux.txt
|_bar.txt
对于每个目录,我想要将其中的文件压缩成*.gz格式,然后删除未压缩的文件。因此最终我们希望得到以下结果:
dir1/
|_foo.gz
|_bar.gz
dir2/
|_qux.gz
|_bar.gz
有没有一种简单的Unix方式来做到这一点?
我有几个看起来像这样的目录:
dir1/
|_foo.txt
|_bar.txt
dir2/
|_qux.txt
|_bar.txt
对于每个目录,我想要将其中的文件压缩成*.gz格式,然后删除未压缩的文件。因此最终我们希望得到以下结果:
dir1/
|_foo.gz
|_bar.gz
dir2/
|_qux.gz
|_bar.gz
有没有一种简单的Unix方式来做到这一点?
gzip */*.txt
但每个文件的扩展名将为“.txt.gz”,因为gzip使用它来知道原始文件名。
gzip -r dir1 dir2
以下代码可以在有子目录的情况下工作,例如 dir1/dir2/.../foo.txt
find . -type f -name "*.txt" -exec gzip {} \;
gzip ./**/*.txt
命令,它将递归压缩当前目录及其所有子目录中的所有文本文件,并删除原始文件。 - thekingoftruth