我有 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
对于单个文件,我可能可以执行
bzcat a.bz2 | gzip -c >a.gz
,但我想知道如何在 bash/linux 中使用一个命令或循环完全转换它们。 最佳答案
与 GNU Parallel 并行简单快速地执行它们:
parallel --dry-run 'bzcat {} | gzip -c > {.}.gz' ::: *bz2
样本输出
bzcat a.bz2 | gzip -c > a.gz
bzcat b.bz2 | gzip -c > b.gz
bzcat c.bz2 | gzip -c > c.gz
如果您喜欢它的外观,请删除
--dry-run
。也许添加一个带有 --bar
或 --progress
的进度表。关于bash - 将多个文件从 bz2 转换为 gz 格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45884963/