我现在有一个 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 一次只能搜索一种模式,我不确定是否可以分别使用包含/排除标志。