2

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

4

2 回答 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 回答