Como listar o conteúdo de um arquivo tar sem recursão?

16

Eu tenho um arquivo tar (gz, bzip) e quero ver seu conteúdo, mas não recursivamente.

Isto é: O "primeiro nível" no arquivo.

Eu já sei ver o conteúdo:

tar -ztf file.tar.gz

Mas é recursivo !!

Obrigado!

santiago.basulto
fonte

Respostas:

11

Que tal algo como:

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

dmah
fonte
3
Lento para tarballs grandes, mas viável #
Nicu Stiurca
18

tar --exclude='*/*' -tf yourarchive.tar deve fazê-lo.

Isso quase certamente é um tar-ism GNU. Mas quem não usa o GNU tar, certo? (Outro fato interessante: nas versões recentes do GNU tar, você não precisa do 'z' ou 'j' para listar ou descompactar arquivos .gz ou .bz - ele os detecta automaticamente e simplesmente funciona.)

mattdm
fonte
Mais fácil de entender e lembrar e muito rápido.
Walf
2
Isso é ótimo, mas nunca vou lembrar que isso -tsignifica lista . Então -tfpode ser convertido para --list -f.
spinup 18/10/19
Esta opção é muito mais rápida que a resposta aceita, obrigado!
Dr_Zaszuś 17/01/19
Para ver o primeiro nível de hierarquia que eu useitar --exclude='*/*/*' -tf yourarchive.tar
user3804598 25/07/19
1

Isso deve mostrar diretórios de nível superior, bem como apenas arquivos que incluem o caractere de ponto:

$ 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
fonte