在 tar 存档中搜索多个路径

Search for multiple paths in a tar archive

我知道我可以像下面这样在 tar

中搜索多个 strings
tar -tf $file |  egrep -i 'str1|str2|str3'

这给了我很多我不感兴趣的路径,例如字符串 str1 是 bfoa

/data/misc/user/0/info.bfoa.com
/data/app/info.bfoa.com
/data/data/info.bfoa.com

如果 str2 是 ubercab

/data/misc/user/0/com.ubercab
    /data/app/com.ubercab
    /data/data/com.ubercab

tar 列表中的匹配项。从这些我只需要那些 /data/data/*string* 模式,例如 /data/data/com.ubercab

我试过了

 tar -tf $file |  egrep -i '/data/data/*str1*|/data/data/*str2*|/data/data/*str3*'

它说

egrep: repetition-operator operand invalid

那么我如何在 tar 搜索中只用 1 grep 次尝试就得到这些东西:
- 搜索列表 search1|search2|search3
-搜索应该是 regexes - 搜索字符串应该通过路径搜索匹配
- 只想要父目录 /data/data/com.ubercab 而不是显示其内容

我想你想要的 egrep 正则表达式模式是:

tar tf bundle.tar | egrep -E "/data/data/.*(str1|str2|str3).*"