在tarball目录中搜索文件?

时间:2012-08-06 20:38:05

标签: linux command find

所以我有一个tarball目录。即/ home / username / dir_w_tarballs。其中一个tarball是一个曾经在这里工作的工程师的许可证密钥。如何在目录中的每个tarball中搜索特定文件?与find . -name some_file类似的东西?我知道我可以使用tar -jtvf file.tar.bz2搜索单个tarball。我希望范围有点广泛。

2 个答案:

答案 0 :(得分:2)

这个怎么样:

find -name '*.tar' -o -name '*.tar.*' | while read f; do
    tar -tf "$f" | grep some_file | sed "s|^|$f:|"
done

它将以递归方式查找当前目录下的所有tarball,列出其中每个tarball,使用grep搜索特定文件,然后sed为每个匹配添加tarball名称,以便您能够分辨哪个tarball包含每个匹配...

答案 1 :(得分:1)

您可以使用tar和grep命令以及bash循环来搜索特定文件或模式。只需更改<模式>:

for i in *.tar.gz; 
do echo $i; 
tar tf $i| grep <pattern>; 
echo '------------'; 
done

它将遍历文件夹中的每个文件,并仅提取树内容和grep。

如果您要进行递归搜索:

find . -type f -name "*.tar.gz" | while read f; do echo $f; tar tf $f| grep db_dump ;done