【发布时间】:2012-08-03 20:30:56
【问题描述】:
所以我有一个 tarball 目录。即/home/username/dir_w_tarballs。在其中一个 tarball 中,有一位曾在这里工作的工程师提供的许可证密钥。如何在目录中的每个 tarball 中搜索特定文件?类似于find . -name some_file 的东西?我知道我可以使用 tar -jtvf file.tar.bz2 搜索单个 tarball。我希望范围更广一些。
【问题讨论】:
所以我有一个 tarball 目录。即/home/username/dir_w_tarballs。在其中一个 tarball 中,有一位曾在这里工作的工程师提供的许可证密钥。如何在目录中的每个 tarball 中搜索特定文件?类似于find . -name some_file 的东西?我知道我可以使用 tar -jtvf file.tar.bz2 搜索单个 tarball。我希望范围更广一些。
【问题讨论】:
您可以使用 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
【讨论】:
这个怎么样:
find -name '*.tar' -o -name '*.tar.*' | while read f; do
tar -tf "$f" | grep some_file | sed "s|^|$f:|"
done
它将递归查找当前目录下的所有 tarball,列出每一个,使用 grep 搜索特定文件,然后 sed 将 tarball 名称添加到每个匹配项中,这样您就可以告诉哪个 tarball 包含每个匹配项...
【讨论】:
tar 版本可以在没有明确-z/-j 选项的情况下解压缩tarball...
bash...