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

时间:2017-08-25 15:38:04

标签: bash

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

access modifier Class A {

access modifier return type method(){};
}

access modifier Class B{

A ob = new A();
ob.method();
}

对于单个文件,我可能会$ 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 ,但我想知道如何使用bash / linux中的一个命令或循环完全转换它们。

2 个答案:

答案 0 :(得分:2)

在终端中,将目录更改为包含.bz文件的目录,然后使用以下命令:

for f in *.bz; do bzcat "$f" | gzip -c >"${f%.*}.gz"; done

这将处理每个文件,一次一个,并为.gz文件提供.bz文件的名称。

示例:DRR091550_1.fastq.bz2将变为DRR091550_1.fastq.gz

答案 1 :(得分:2)

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添加进度表。