如何在不解压的情况下在 tar.gz 中的特定文件中进行 grep?

Ale*_*o C 7 grep bash tar

我正在寻找可以在 tar.gz 存档中包含的特定文件中执行 grep 操作的命令。

例子:

文件:archive.tar.gz,其中 ? 包含:

fileA.txt
fileB.txt
fileC.txt
Run Code Online (Sandbox Code Playgroud)

我只想在 fileA.txt 中 grep 而不是在其他两个中,而不从原始存档中提取文件,只有一个命令。

是否可以?

我试过了:

for f in /path/*.gz; do
    tar -xzf "$f" --to-command='grep -Hn --label="$TAR_ARCHIVE/$TAR_FILENAME" pattern || true'
done
Run Code Online (Sandbox Code Playgroud)

此命令在存档中包含的所有文件中执行 grep,但这并不是我所需要的。我需要一个仅在我要搜索的文件中搜索的命令。

Ste*_*itt 17

告诉tar它应该在存档中处理哪个文件:

for f in /path/*.gz; do
  tar -xzf "$f" --to-command='grep -Hn --label="$TAR_ARCHIVE/$TAR_FILENAME" pattern || true' fileA.txt
done
Run Code Online (Sandbox Code Playgroud)

fileA.txttar命令的末尾)。