encontrar un archivo dentro de un archivo tar.gz

12

¿Es posible usar el findcomando para que busque los archivos dentro de un archivo tar.gz también usando comodines?

me gusta

find archive.tar.gz --name *foo*
abrazadera
fuente

Respuestas:

17

¿Qué tal solo:

$ tar tf archive.tar.gz | grep foo
Chris Down
fuente
¿eso no solo enumera todos los archivos?
abrazadera
@clamp Sí, si desea hacer algo con cada archivo, simplemente canalice esa salida a otro comando.
¡Gracias! lo siento pero soy un novato en Unix. Lo intenté: tar tf graphics.tar.gz | find . --name *space*pero diceunkown predicate --name
abraza el
Los findargumentos de @clamp solo toman un guión, pero debido a que es una lista de archivos en stdin, debes usarlos grep, como el código de ejemplo de hesse. Pruebatar tf graphics.tar.gz | grep 'space'
Kevin
1
grep *foo*No es una expresión regular válida. gregno entiende los globos, entiende las expresiones regulares. Intenta en su grep foolugar.
Alexios
3

Montar el archivo como un directorio. Puede hacerlo con el sistema de archivos AVFS , que le permite acceder a cualquier archivo como un directorio cuyo nombre tiene un final #.

mountavfs
cd ~/.avfs$PWD
find archive.tar.gz\# -name '*foo*'
Gilles 'SO- deja de ser malvado'
fuente
no funciona para gzip
van abel
@vanabel Un archivo gzip no contiene otros archivos. Es solo un archivo comprimido. Así que no hay "adentro" para buscar.
Gilles 'SO- deja de ser malvado'
2

Creo que funciona sin tubería y grep.

Me gusta esto: tar tvf archive.tar.gz "foo"

De esta manera, los globos también funcionarán.

tar tvf archive.tar.gz "*.foo"

Saeed Sepehr
fuente