find
solo busca archivos que existen en la jerarquía de directorios, no aquellos almacenados dentro de los archivos. Puede enumerar los archivos contar -t
:
tar -ztf./foo_tar/bar.tar.gz --wildcards --no-anchored 'baz*'
--wildcards
permite que *
se interprete como un comodín, y --no-anchored
permite que el nombre del archivo coincida después de cualquier /
(, por lo que aún se encontrará si está en un subdirectorio en el archivo ).
La coincidencia de patrones -en tar
no es tan flexible como en find
. Para el tipo de patrón que describe, podría filtrar el contenido completo a través degrep
:
tar -ztf./foo_tar/bar.tar.gz | grep '\(^\|/\)baz[0-9]\+_'
Como desea guardar el resultado en una variable, también debe encerrar el comando usando Sustitución de comando:
filename_in_question=$(tar -ztf./foo_tar/bar.tar.gz | grep '\(^\|/\)baz[0-9]\+_')
Esto aún sería necesario si estuviera usando find
.