我有一个非常大的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 文件中执行此操作以及如何将组合文件写入另一个目录。
使用 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
使用 tar 并假设文件夹 Big 有 FileA.gz、FileB.gz 等:
tar -czv -f /path/to/final/BigFile.gz -C Big .