将文件合并为一个

问题描述 投票:0回答:3

目前我在这个目录中-

/data/real/test

当我在命令提示符下执行

ls -lt
时。我喜欢下面的东西-

REALTIME_235000.dat.gz
REALTIME_234800.dat.gz
REALTIME_234600.dat.gz
REALTIME_234400.dat.gz
REALTIME_234200.dat.gz

如何在 Unix 中将上述五个

dat.gz files
合并为一个
dat.gz file
而不丢失任何数据。我是 Unix 新手,对此我不太确定。谁能帮我解决这个问题吗?

更新:-

我不确定哪种方法是最好的方法,我是否应该解压这五个文件,然后将其合并为一个?或者 将所有这些

five dat.gz
合并为一个
dat.gz

linux unix gzip solaris sunos
3个回答
12
投票

如果可以按随机顺序连接文件内容,则以下命令即可解决问题:

zcat REALTIME*.dat.gz | gzip > out.dat.gz

更新

这应该可以解决订单问题:

zcat $(ls -t REALTIME*.dat.gz) | gzip > out.dat.gz

5
投票

当您对结果进行压缩时,您希望发生什么?如果您希望这五个文件重新出现,则需要使用 gzip (.gz) 格式以外的格式。您需要使用 tar (.tar.gz) 或 zip (.zip)。

如果您希望gunzip的结果是原始文件的gunzip的串联,那么您可以简单地将文件cat(不是zcat或gzcat)在一起。 gunzip 然后会将它们解压缩为一个文件。

cat [files in whatever order you like] > combined.gz

然后:

gunzip combined.gz

将产生一个输出,该输出是原始文件的gunzip的串联。

将它们全部解压然后重新压缩为一个流的建议是完全没有必要的。


0
投票

这看起来几乎就像一个黑魔法,但实际上你可以直接连接GZ文件

该格式就是为此而设计的(与 MP3 一起)。在内部,GZ 被组织成独立的压缩流块,每个块都有自己的标头、压缩字典、校验和等。

因此,当您连接多个 GZ 文件时,未压缩的流正是原始文件的连接。

© www.soinside.com 2019 - 2024. All rights reserved.