¿Cómo listar contenido de un archivo tar sin recursividad?

16

Tengo un archivo tar (gz, bzip) y quiero ver su contenido, pero no de forma recursiva.

Esto es: el "primer nivel" en el archivo.

Ya sé cómo ver el contenido:

tar -ztf file.tar.gz

¡Pero es recursivo!

¡Gracias!

santiago.basulto
fuente

Respuestas:

11

¿Qué tal algo como:

tar -ztf file.tar.gz | egrep '^ [^ /] + /? $'

dmah
fuente
3
Lento para grandes tarballs, pero viable
Nicu Stiurca
18

tar --exclude='*/*' -tf yourarchive.tar Deberías hacerlo.

Eso es casi seguro un tar-ismo de GNU. Pero, ¿quién no usa GNU tar, verdad? (Otro dato divertido: en versiones recientes de GNU tar, no necesita la 'z' o 'j' para enumerar o descomprimir archivos .gz o .bz; los detecta automáticamente y simplemente funciona).

mattdm
fuente
Más fácil de entender y recordar y mucho más rápido.
Walf
2
Esto es genial, pero nunca recordaré que eso -tsignifica lista . Entonces -tfse puede convertir a --list -f.
spinup
Esta opción es mucho más rápida que la respuesta aceptada, ¡gracias!
Dr_Zaszuś
Para ver el primer nivel de jerarquía que utilicétar --exclude='*/*/*' -tf yourarchive.tar
user3804598 el
1

Esto debería mostrar directorios de nivel superior, así como solo archivos que incluyen el carácter de punto:

$ tar -tf app.tar.gz | grep -E '^\w+(\.\w+)*/*\w+(\.\w+)*/?$'

django/
django/django.wsgi
django/search_indexes/
django/templates/
django/app/
django/other-app/
Sam Halicke
fuente