Grep строка из того же файла в нескольких файлах .tar.gz

У меня есть несколько файлов * .tar.gz. Все они содержат файлы с именами файлов a, b и c. Есть ли способ grep string 'foo' только из файла b под этими несколькими * .tar.gz файлами без извлечения файлов.

Предполагая, что «без извлечения» вы подразумеваете «без сохранения извлеченных файлов на диск»:

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

Варианты tar:

x экстракт
z gunzip перед извлечением
O dump to stdout вместо создания файла (заглавная буква oh, а не ноль)
f из указанного файла tar

grep (предложенный JJoao)

--label=... использовать указанную метку в качестве имени файла
-H распечатать имя файла для каждого матча

Команда zgrep работает с файлами .tar.gz без извлечения содержимого.