我现在有一个tar.gz,我想从中提取一个或两个文件,并将它们打包/添加到新的tar.gz中,一次性完成。当然,我可以保存到一个临时文件并使用它,但ABSOLUTE的要求是不需要任何中间文件输出即管道。换句话说,我想是类似下面的伪代码(显然是语法不正确)管道沥青提取到焦油创建
tar -xvf first.tar.gz subdir1/file1 subdir2/file2 | tar cf - | gzip > second.tar.gz
有谁知道这个正确的语法?我尝试过很多变种,但无济于事。
我对使用cpio的想法也非常开放,但是又一次,我被如何正确地获取语法所困扰,并且从我所了解的情况来看,cpio只采用档案或文件名,而不是文件。
任何帮助将不胜感激。
编辑:tarball里面没有特定的文件名模式来提取。鉴于BSD和GNU tar一次只能搜索一种模式,我不确定是否可以分别使用include/exclude标志。
你要的文件从第一个压缩包中提取文件名有一些模式? – fvwmer 2012-07-13 02:47:44
我编辑了下面的GNU tar和BSD tar解决方案,以显示我的测试,它们都允许指定多个文件来删除或包含。所以这两种解决方案都适用于您的问题 – 2012-07-14 02:53:39