从多个 .tar.gz 文件中的同一文件中 Grep 字符串

从多个 .tar.gz 文件中的同一文件中 Grep 字符串

我有多个 *.tar.gz 文件。它们都包含文件名为 a、b 和 c 的文件。有没有办法仅从这些多个 *.tar.gz 文件下的文件 b 中 grep 字符串“foo”,而不提取文件。

答案1

假设“不提取”的意思是“不将提取的文件保存到磁盘”:

for file in *.tar.gz ; do
    tar xzOf $file b | grep --label=$file/b -H foo
done

焦油选项:

x在将转储提取到标准输出之前提取
zgunzip
O,而不是
f从指定的tar文件创建文件(大写字母哦,不是数字零)

grep 选项(JJoao 建议)

--label=...使用指定的标签作为文件名
-H打印每个匹配的文件名

答案2

该命令zgrep适用于 .tar.gz 文件,无需提取内容。

相关内容