如何有效地将多个大.gz文件合并为一个文件?

时间:2019-09-05 08:25:28

标签: bash compression gzip large-files gunzip

我正在尝试将多个(29)压缩文件(.gz)依次合并到一个文件中。

压缩文件约为500MB,未压缩格式约为30GB。所有文件都以我在最终文件中不需要的标题开头。

我尝试使用zcatgzip来完成此操作,但是这需要很多时间(超过3小时):

 zcat file*.gz | tail -n +2 | gzip -c >> all_files.txt.gz 

我也尝试过pigz

 unpigz -c file*.gz | tail -n +2 | pigz -c >> all_files_pigz.txt.gz 

在这种情况下,我正在集群中工作,他们没有此命令,因此无法安装任何东西。

我最后尝试的方法是将所有内容与cat合并:

 cat file*.gz > all_files_cat.txt.gz

它并不需要很多时间,但是当我要阅读它时,出现以下消息:

 gzip: unexpected end of file

我该如何处理?

1 个答案:

答案 0 :(得分:1)

如果要删除每个未压缩文件的第一行,并将它们全部连接到一个压缩文件中,则需要循环。像

class Category extends Model
{
    protected $with = ['subcategory'];
}

如果有很多大文件,是的,可能需要一段时间。也许使用比默认压缩级别低的压缩级别(以更大的文件大小为代价)。或者使用与gzip不同的压缩程序;有很多选择,每个选择都有自己的速度和压缩比权衡。