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