複数の .tar.gz ファイルにある同じファイルの Grep 文字列

複数の .tar.gz ファイルにある同じファイルの Grep 文字列

*.tar.gz ファイルが複数あります。それらはすべてa、b、cという名前のファイルを含みます。ファイルを抽出せずに複数の* .tar.gzファイルの下にあるファイルbからのみ文字列 "foo"をgrepする方法はありますか?

ベストアンサー1

「抽出しない」とは、「抽出したファイルをディスクに保存しない」を意味すると仮定する。

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

タールオプション:

x指定された tar ファイルからファイルを生成するのではなく、標準出力にダンプを抽出する前に
zgunzip を抽出します(数値ゼロ以外の大文字).
O
f

grepオプション(JJoaoが提案)

--label=...指定されたタグをファイル名として使用して、
-H一致する各ファイル名を印刷します。

おすすめ記事