我现在有一个tar.gz文件,我想从中提取一个或两个文件,并将它们打包/添加到一个新的tar.gz文件中,一次完成所有操作。当然,我可以将其保存到临时文件并进行操作,但是绝对要求是不产生任何中间文件输出,即使用管道。换句话说,我希望得到类似以下伪代码的内容(显然,语法是不正确的):
tar -xvf first.tar.gz subdir1/file1 subdir2/file2 | tar cf - | gzip > second.tar.gz
有谁知道这个的正确语法?我尝试了许多变量,但是都没有成功。
我也很乐意使用cpio的想法,但我不确定如何正确地编写语法,并且据我所知,cpio仅输入归档文件或文件名,而不是文件。
任何帮助都将不胜感激。
编辑:tarball中没有特定的文件名模式要提取。鉴于BSD和GNU tar只能一次搜索一个模式,我不确定是否可能使用包含/排除标志。