在 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).*"
我知道我可以像下面这样在 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).*"