将多个 gzip 压缩文件合并到一个 tar 文件中

combine multiple gzip compressed files in a tar file

我有一个非常大的 tar 文件,其中包含许多 gzip 文件。我想将所有 gzip 文件组合成一个 gzip 文件并放在另一个目录中。要查看 tar 文件的内容,我使用:

tar -zxvf Big.tar

给出:

Big/FileA.gz
Big/FileB.gz
Big/FileC.gz
Big/FileD.gz

为了正常合并多个 gzip 文件,我会移动到该目录并使用:

cat FileA.gz FileB.gz FileC.gz FileD.gz > BigFile.gz

但是 BigFile.gz 将保留在该目录中。我只是不确定如何在 tar 文件中执行此操作以及如何将组合文件写入另一个目录。

使用 tar 并假设文件夹 Big 有 FileA.gz、FileB.gz 等:

tar -czv -f /path/to/final/BigFile.gz -C Big .

使用 GNU tar,您可以:

tar -Oxf Big.tar --wildcards 'Big/*.gz' > /tmp/your_file.gz

使用 OS X tar,您必须单独列出文件:

tar -Oxf Big.tar Big/FileA.gz Big/FileB.gz > /tmp/your_file.gz

两者的显着特征是-O,它将文件写入标准输出。

以下是 GNU 系统上的示例抄本:

$ pwd
/home/me

$ tar tf Big.tar
Big/
Big/foo.txt.gz
Big/bar.txt.gz

$ tar -Oxf Big.tar --wildcards 'Big/*.gz' > /tmp/your_file.gz

$ zcat /tmp/your_file.gz
This is the contents of foo.txt
This is the contents of bar.txt