将多个文件从 bz2 格式转换为 gz 格式

Dav*_*d Z 5 bash

我有 575 个 bz2 文件,平均大小为 3G,需要将它们转换为 .gz 格式,以使它们与下游管道兼容。

$ ll -h | head
total 1.4T
drwxrws---+ 1 dz33 dcistat  24K Aug 23 09:21 ./
drwxrws---+ 1 dz33 dcistat  446 Aug 22 11:57 ../
-rw-rw----  1 dz33 dcistat 2.0G Aug 22 11:38 DRR091550_1.fastq.bz2
-rw-rw----  1 dz33 dcistat 2.0G Aug 22 11:38 DRR091550_2.fastq.bz2
-rw-rw----  1 dz33 dcistat 2.0G Aug 22 11:38 DRR091551_1.fastq.bz2
-rw-rw----  1 dz33 dcistat 2.0G Aug 22 11:38 DRR091551_2.fastq.bz2
-rw-rw----  1 dz33 dcistat 1.9G Aug 22 11:38 DRR091552_1.fastq.bz2
-rw-rw----  1 dz33 dcistat 1.9G Aug 22 11:38 DRR091552_2.fastq.bz2
-rw-rw----  1 dz33 dcistat 1.8G Aug 22 11:38 DRR091553_1.fastq.bz2

$ ll | wc -l
575
Run Code Online (Sandbox Code Playgroud)

对于单个文件我可能可以做到bzcat a.bz2 | gzip -c >a.gz,但我想知道如何使用 bash/linux 中的一个命令或循环完全转换它们。

Mar*_*ell 7

使用GNU Parallel并行地简单快速地完成它们:

parallel --dry-run 'bzcat {} | gzip -c > {.}.gz' ::: *bz2
Run Code Online (Sandbox Code Playgroud)

样本输出

bzcat a.bz2 | gzip -c > a.gz
bzcat b.bz2 | gzip -c > b.gz
bzcat c.bz2 | gzip -c > c.gz
Run Code Online (Sandbox Code Playgroud)

如果您喜欢它的外观,请删除--dry-run. --bar也许可以使用或添加进度表--progress