6

目前我在这个目录中-

/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

4

2 回答 2

12

如果可以以随机顺序连接文件内容,那么以下命令将起到作用:

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

更新

这应该解决订单问题:

zcat $(ls -t REALTIME*.dat.gz) | gzip > out.dat.gz
于 2012-08-02T20:57:22.063 回答
5

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

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

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

然后:

gunzip combined.gz

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

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

于 2012-08-02T23:14:56.637 回答