2012-12-05 16 views
1

我有一个压缩存档(archives.tar.gz)的压缩存档f1.tar.gz,f2.tar.gz,f3.tar.gz ..如何列出嵌套存档的内容(.gz)

我想列出一个子档案文件的内容,比如说f1.tar.gz,而没有真正的解包和提取所有内容。换句话说,我需要能够执行如下操作:tar -ztvf f1.tar.gz无需首先执行:tar -zxvf archives.tar.gz

有关如何执行此操作的任何想法?

非常感谢!

回答

1

由于压缩的性质,没有真正的方法可以做到这一点,而不会产生解压压缩文件的一些开销。从存档

tar -zxOf archives.tar.gz f1.tar.gz | tar -ztf - 

这将只提取f1.tar.gz并且将其提供给第二焦油,这将列出文件:如果你想避免创建中间文件,你可以做到这一点。

+0

谢谢吉姆,你的解决方案很有道理,但我对最后的连字符不确定。这是做什么的?我无法使它完全符合这个语法(最后的连字符),但是我可以通过在第二个tar之后指定文件名来使其工作: tar -zxvf archives.tar.gz f1.tar .gz | tar -ztf f1.tar.gz ......这里唯一不足的地方是我剩下的是中间值f1.tar.gz – user1880387

+0

末尾的连字符告诉它从标准输入中读取。它必须遵循'f',因为它被用作文件名。在Unix中使用'-'作为文件名是“从标准输入读取而不是打开文件”的惯例。如果你正在添加其他标志(比如'v'),确保它们在'f'之前。 –

+0

酷 - 所以我再次尝试... //这种方式我没有得到任何结果 matt#tar -zxvf log_backup_112912.tar.gz ./booksite-1.0-event.log.tar.gz | tar -tvf - matt# #tar -zxvf archives.tar.gz ./.tar.gz | tar -tvf ./booksite* -rw -r - r-- root/root 556504 2012-11-27 23:16:43 ./booksite-1.0-event.log.121127 – user1880387