Linux 在tarballs目录中搜索文件?

Linux 在tarballs目录中搜索文件?,linux,command,find,Linux,Command,Find,所以我有一个tarballs目录。i、 e/home/username/dir_w_tarballs。在其中一个tarball中有一个工程师的许可证密钥,他以前在这里工作。如何在目录中的每个tarball中搜索特定文件?类似于find的东西-说出一些文件的名称?我知道我可以用tar-jtvf file.tar.bz2搜索单个tarball。我希望范围更广一些。这个怎么样: find -name '*.tar' -o -name '*.tar.*' | while read f; do t

所以我有一个tarballs目录。i、 e/home/username/dir_w_tarballs。在其中一个tarball中有一个工程师的许可证密钥,他以前在这里工作。如何在目录中的每个tarball中搜索特定文件?类似于
find的东西-说出一些文件的名称
?我知道我可以用
tar-jtvf file.tar.bz2
搜索单个tarball。我希望范围更广一些。

这个怎么样:

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和grep命令以及bash for loop搜索特定文件或模式。只需更改

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

谢谢你的快速回复!似乎对我不起作用。我将其全部作为一行命令输入,如this@Houdini:这还假设了一个合理的最新的
tar
版本,可以在没有显式
-z
/
-j
选项的情况下解压缩tarball…很抱歉,我的上一篇文章搞砸了。我不知道如何在响应窗口中使用突出显示代码,但基本上我是作为一行输入的(现在带有额外的分号):find-name'.tar'-o-name'.tar.*';同时读取f;dotar-tf“$f”| grep libncui.so | sed“s | | |$f:|”;donetar-1.26应该可以。你用的是哪个外壳?这段代码是针对
bash
…我正在使用bash。我理解您试图做什么的逻辑,但我不是一个足够强大的Linux用户,无法判断我是否做错了什么。明天我会问一位高级工程师你的建议。非常感谢。
find . -type f -name "*.tar.gz" | while read f; do echo $f; tar tf $f| grep db_dump ;done