将文件合并为一个

AKI*_*WEB 5 unix linux gzip solaris sunos

目前我在这个目录中 -

/data/real/test
Run Code Online (Sandbox Code Playgroud)

当我ls -lt在命令提示符下执行.我得到以下的东西 -

REALTIME_235000.dat.gz
REALTIME_234800.dat.gz
REALTIME_234600.dat.gz
REALTIME_234400.dat.gz
REALTIME_234200.dat.gz
Run Code Online (Sandbox Code Playgroud)

如何在Unix 中将上述五个合并dat.gz files为一个dat.gz file,而不会丢失任何数据.我是Unix的新手,我对此不太确定.谁可以帮我这个事?

更新: -

我不确定哪个是最好的方法,我是否应解压缩五个文件中的每一个然后合并为一个?或将所有这些five dat.gz成一个dat.gz

Iva*_*uev 11

如果可以按随机顺序连接文件内容,那么以下命令将完成这一操作:

zcat REALTIME*.dat.gz | gzip > out.dat.gz
Run Code Online (Sandbox Code Playgroud)

更新

这应该解决订单问题:

zcat $(ls -t REALTIME*.dat.gz) | gzip > out.dat.gz
Run Code Online (Sandbox Code Playgroud)

  • @ Nevzz03你是在Solaris而不是Linux吗?如果是这样,请使用`gzcat*.gz | 改为gzip> out.dat.gz`.Solaris上的`zcat`实用程序使用不同的压缩套件(`compress`和`decompress`),它使用`.Z`作为后缀而不是`.gz`.在其他非Linux Unixen(AIX等)上也可能出现这种情况...... (3认同)

Mar*_*ler 5

你在枪杀结果时想要发生什么?如果你想重新出现这五个文件,那么你需要使用gzip(.gz)格式以外的东西.您需要使用tar(.tar.gz)或zip(.zip).

如果你想让gunzip的结果成为原始文件的gunzip的连接,那么你可以简单地将文件cat(而不是zcat或gzcat)放在一起.然后gunzip将它们解压缩为单个文件.

cat [files in whatever order you like] > combined.gz
Run Code Online (Sandbox Code Playgroud)

然后:

gunzip combined.gz
Run Code Online (Sandbox Code Playgroud)

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

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