Linux命令行 – searchtar文件内的文件

我想检查一个文件是否在gzip的tar档案中。 例如,我想检查/ etc / passwd是否存在于档案backup_2010-09-27.tar.gz中

愚蠢的解决scheme可以是:

tar -tzf backup_2010-09-27.tar.gz | grep '/etc/passwd' 

但是这需要时间。 有更好的解决scheme吗?

试试这个(省略最初的斜线):

 tar -tzf backup_2010-09-27.tar.gz etc/passwd 

其耗时的过程,无法在压缩之前到达焦油档案成员。 我不知道列出tar时显式指定成员偏移量有多大帮助,但是如果成员查找过程比完全列表更快,那么:

 tar -K etc/passwd -tzf backup_2010-09-27.tar.gz| head -1 

我怀疑这是什么。

你也可以尝试提取文件并检查返回代码,这样你就可以完全清除归档和grepping。

 echo etc/passwd | tar -T - -K etc/passwd -Oxzf backup_2010-09-27.tar.gz >/dev/null 

$? 应该是零

还是,枪支….