所以我有一个 tarball 目录。即/home/username/dir_w_tarballs。在其中一个 tarball 中是来自曾经在这里工作的工程师的许可证密钥。如何在目录中的每个 tarball 中搜索特定文件?类似的东西find . -name some_file
?我知道我可以使用tar -jtvf file.tar.bz2
. 我希望范围更广一些。
问问题
267 次
2 回答
2
这个怎么样:
find -name '*.tar' -o -name '*.tar.*' | while read f; do
tar -tf "$f" | grep some_file | sed "s|^|$f:|"
done
它将递归查找当前目录下的所有压缩包,列出每个压缩包,grep
用于搜索特定文件,然后sed
将压缩包名称添加到每个匹配项,以便您能够判断哪个压缩包包含每个匹配项...
于 2012-08-06T20:42:07.973 回答
1
您可以使用 tar 和 grep 命令以及 bash for 循环来搜索特定文件或模式。只需更改<模式>:
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
于 2020-10-26T11:18:26.233 回答