find
procura apenas arquivos que existem na hierarquia de diretórios, não aqueles armazenados dentro de arquivos. Você pode listar os arquivos com tar -t
:
tar -ztf ./foo_tar/bar.tar.gz --wildcards --no-anchored 'baz*'
--wildcards
permite que *
seja interpretado como um caractere curinga, e --no-anchored
permite que o nome do arquivo corresponda depois de qualquer /
(portanto, ele ainda será encontrado se estiver em um subdiretório no archive).
A correspondência de padrões em tar
não é tão flexível quanto em find
. Para o tipo de padrão que você descreve, você poderia filtrar o conteúdo completo por meio de grep
:
tar -ztf ./foo_tar/bar.tar.gz | grep '\(^\|/\)baz[0-9]\+_'
Como você deseja salvar o resultado em uma variável, você também precisa colocar o comando usando Substituição de Comando :
filename_in_question=$(tar -ztf ./foo_tar/bar.tar.gz | grep '\(^\|/\)baz[0-9]\+_')
Isso ainda seria necessário se você estivesse usando find
.