nev*_*int 81 unix linux compression gzip
我有gzip文件列表:
file1.gz
file2.gz
file3.gz
Run Code Online (Sandbox Code Playgroud)
有没有办法将这些文件连接或gzipping到一个gzip文件 而不必解压缩?
实际上,我们将在Web数据库(CGI)中使用它.Web将从用户接收查询并基于查询列出所有文件,并将它们以批处理文件的形式呈现给用户.
bdo*_*lan 90
使用gzip文件,您可以简单地将文件连接在一起.根据gzip RFC,
gzip文件由一系列"成员"(压缩数据集)组成.[...]成员只是在文件中一个接一个地出现,在它们之前,之间或之后没有其他信息.
请注意,这与构建连接数据的单个gzip文件不完全相同; 除其他外,保留所有原始文件名.然而,gunzip似乎把它当作串联来处理.
由于现有工具通常会忽略其他成员的文件头,因此从结果中提取单个文件并不容易.如果您希望这样做,请改为构建ZIP文件.ZIP和GZIP都使用DEFLATE算法进行实际压缩(ZIP支持一些其他压缩算法以及一个选项 - 方法8是与GZIP压缩相对应的方法); 不同之处在于元数据格式.由于元数据是未压缩的,因此它很容易剥离gzip标头并改为使用ZIP文件头和中央目录记录.请参阅gzip格式规范和ZIP格式规范.
小智 47
以下是gzip关于您的要求的手册页.
可以连接多个压缩文件.在这种情况下,gunzip将立即提取所有成员.例如:
gzip -c file1 > foo.gz
gzip -c file2 >> foo.gz
Run Code Online (Sandbox Code Playgroud)
不用说,file1可以被file1.gz替换
你必须注意到这一点."gunzip将立即提取所有成员".
因此,要单独获得所有成员,您将不得不使用额外的东西或写,如果您希望这样做:)
但是,这也在手册页中提到.
"如果你想创建一个包含多个成员的存档文件,以便以后可以独立提取成员,请使用tar或zip等存档.GNU tar支持-z选项以透明方式调用gzip.gzip被设计为补充焦油,不是替代品."
HTH
mat*_*tiu 13
只是用猫.速度非常快(500 MB对我来说是0.2秒)
cat *gz > final
mv final final.gz
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用zcat读取输出以确保它非常漂亮:
zcat final.gz
Run Code Online (Sandbox Code Playgroud)
我尝试了'gz -c'的另一个答案但是当我使用已经gzipped文件作为输入时我最终得到了垃圾(我猜它是双重压缩它们).
PV:
更好的是,如果你有它,'pv'而不是cat:
pv *gz > final
mv final final.gz
Run Code Online (Sandbox Code Playgroud)
这为您提供了一个进度条,但它与cat相同.
Dro*_*ona 11
您可以创建这些文件的tar文件,然后gzip tar文件以创建新的gzip文件
tar -cvf newcombined.tar file1.gz file2.gz file3.gz
gzip newcombined.tar
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
65210 次 |
最近记录: |