我有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中的一个命令或循环完全转换它们。
答案 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
添加进度表。