将文件合并为一个

时间:2012-08-02 20:52:42

标签: linux unix gzip solaris sunos

目前我在这个目录中 -

/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

2 个答案:

答案 0 :(得分:11)

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

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

<强>更新

这应解决订单问题:

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

答案 1 :(得分: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的串联。

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