Como posso visualizar o conteúdo do arquivo tar.gz sem extrair da linha de comando?

246

Quero ver o conteúdo (lista de arquivos e pastas) de um arquivo, por exemplo, um tar.gzarquivo sem extraí- lo.

Existem métodos para fazer isso?

Avinash Raj
fonte

Respostas:

265

Execute o comando abaixo no terminal para ver o conteúdo de um arquivo tar.gz sem extraí-lo:

tar -tf filename.tar.gz

captura de tela da listagem de arquivos tarball compactados no terminal

-t, --list
Lista o conteúdo de um arquivo. Os argumentos são opcionais. Quando fornecidos, eles especificam os nomes dos membros a serem listados.

Avinash Raj
fonte
1
O exemplo de todos esses exemplos para procurar dentro do arquivo compactado também funciona em outros tipos de formato. como zip, rar, alcatrão etc.?
Ciasto piekarz
3
tar -tvf xxx.tgzisso também mostraria propriedades detalhadas dos arquivos.
Eric Wang
4
canalizá-lo para treever uma exibição de árvoretar -tf filename.tar.gz | tree
blockloop
Para zip / rar use unzip -l/unrar -l
pLumo
Se você deseja listar até uma profundidade / nível específico , veja aqui .
holzkohlengrill
120

Você também pode usar o vim

vim filename.tar.gz
sm
fonte
9
Isso é incrível. Você também pode ver o conteúdo dos arquivos!
Nico
1
Ou usar o editor Ex: ex +%p foo.tar.gz.
23415 kenorb
@Nico Como você usa isso para ver o conteúdo de um arquivo dentro do tgz?
1252748
1
Quando você abre o arquivo com vim ( vim file.tar.gz), ele diz "Selecione um arquivo com o cursor e pressione ENTER". Você faz exatamente isso, mova o cursor sobre um arquivo e pressione ENTER.
Nico
2
Com um arquivo enorme, você apenas precisa ser paciente. Pode demorar muito para carregar a estrutura da pasta. :-)
Hugo H
41

lesstambém pode abrir arquivos gzcompactados e descompactados tar. Também oferece uma ls -lsaída de estilo adorável :

$ less ~/src/compiz_0.9.7.8-0ubuntu1.6.debian.tar.gz
drwxrwxr-x 0/0               0 2012-09-21 11:41 debian/
drwxrwxr-x 0/0               0 2012-08-09 13:32 debian/source/
-rw-rw-r-- 0/0              12 2012-08-09 13:32 debian/source/format
-rw-rw-r-- 0/0              25 2012-08-09 13:32 debian/libdecoration0-dev.docs
-rw-rw-r-- 0/0              25 2012-08-09 13:32 debian/compiz-dev.docs
-rw-rw-r-- 0/0             347 2012-08-09 13:32 debian/compiz-core.install
-rw-rw-r-- 0/0             125 2012-08-09 13:32 debian/libdecoration0-dev.install
...

E como é less, você pode rolar, pesquisar, etc. No entanto, falha miseravelmente com outros algoritmos de compactação (na minha experiência).

Oli
fonte
4
Não funcionou para mim. Exibido como um arquivo binário.
JeromeJ
2
Tem certeza de que não possui aliasopções especiais para o lessque não está sendo exibido aqui? Eu apenas tentei ver isso, mas não funcionou. Não tenho aliases configurados para less.
Codigo_de_dredd 20/07
37

Você pode usar o comando z: zcat, zless, zgrep.

Para visualizar o conteúdo de um arquivo, use:

zcat file.gz   

Para grep algo, use:

zgrep test file.gz   

Para verificar a diferença entre os arquivos, use:

zdiff file1.gz file2.gz

Estes são apenas alguns exemplos, existem muitos mais.

krt
fonte
9

tarA -tbandeira de listará o conteúdo para você. Adicione isso aos seus outros sinalizadores ( -tvfzpara a tar.gz, -tvfjpara a tar.bz2, etc) e você poderá navegar sem extrair. De lá, você pode extrair arquivos únicos com bastante facilidade

tar -xvfz mybackup.tar.gz path/to/file

O grande problema taré lembrar todas as outras bandeiras . Por isso, costumo confiar em 7z(do p7zip-fullpacote) para fazer todo o meu arquivamento. Não vou afirmar que é totalmente melhor, mas suporta quase tudo (sem precisar especificar o tipo de compactação) e os argumentos são lógicos.

7z l archive.ext
7z e archive.ext path/to/file

É certamente menos capaz, mas você não precisa da página de manual para usá-lo.

Há também Midnight Commander ( mc). Este é um assunto geral para gerenciamento de arquivos quase gráfico baseado em terminal e, com alguns testes leves, permite navegar nos arquivos .tar.gze nos .7zarquivos. Não tenho certeza de quantos outros ele suporta.

Oli
fonte
O t-ar costumava ser e o nome realmente significa arquivador de fita , que grita sequencialmente e é, em muitos casos, uma PIA. Especialmente como o inevitável duplo tar + gz, isso é apenas cruel. Também movendo para 7zip agora.
24517 Frank Nocke
9

Bem, isso depende do arquivo. A maioria dos programas de (des) compactação possui um sinalizador que lista o conteúdo de um arquivo.

  1. tar/ tar.gz/ tgz/ tar.xz/ tar.bz2/ tbzarquivos

    $ tar tf foo.tgz 
    dir1/
    dir1/subdir1/
    dir1/subdir1/file
    dir1/subdir2/
    dir1/subdir2/file
    dir2/
    
  2. zip arquivos

    $ zip -sf foo.zip 
    Archive contains:
      dir1/
      dir2/
      dir1/subdir1/
      dir1/subdir1/file
      dir1/subdir2/
      dir1/subdir2/file
    Total 6 entries (0 bytes)
    
  3. 7zip arquivos

    $ 7z l foo.7z 
    
    7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
    p7zip Version 9.20 (locale=en_US.utf8,Utf16=on,HugeFiles=on,4 CPUs)
    
    Listing archive: foo.7z
    
    --
    Path = foo.7z
    Type = 7z
    Solid = -
    Blocks = 0
    Physical Size = 168
    Headers Size = 168
    
       Date      Time    Attr         Size   Compressed  Name
    ------------------- ----- ------------ ------------  ------------------------
    2015-03-30 19:00:07 ....A            0            0  dir1/subdir1/file
    2015-03-30 19:00:07 ....A            0            0  dir1/subdir2/file
    2015-03-30 19:07:32 D....            0            0  dir2
    2015-03-30 19:00:07 D....            0            0  dir1/subdir2
    2015-03-30 19:00:07 D....            0            0  dir1/subdir1
    2015-03-30 19:00:06 D....            0            0  dir1
    ------------------- ----- ------------ ------------  ------------------------
                                         0            0  2 files, 4 folders
    
  4. rar arquivos

     $ rar v foo.rar 
    
    RAR 4.20   Copyright (c) 1993-2012 Alexander Roshal   9 Jun 2012
    Trial version             Type RAR -? for help
    
    Archive foo.rar
    
    Pathname/Comment
                      Size   Packed Ratio  Date   Time     Attr      CRC   Meth Ver
    -------------------------------------------------------------------------------
     dir1/subdir1/file
                         0        8   0% 30-03-15 19:00 -rw-r--r-- 00000000 m3b 2.9
     dir1/subdir2/file
                         0        8   0% 30-03-15 19:00 -rw-r--r-- 00000000 m3b 2.9
     dir1/subdir1
                         0        0   0% 30-03-15 19:00 drwxr-xr-x 00000000 m0  2.0
     dir1/subdir2
                         0        0   0% 30-03-15 19:00 drwxr-xr-x 00000000 m0  2.0
     dir1
                         0        0   0% 30-03-15 19:00 drwxr-xr-x 00000000 m0  2.0
     dir2
                         0        0   0% 30-03-15 19:07 drwxr-xr-x 00000000 m0  2.0
    -------------------------------------------------------------------------------
        6                0       16   0%
    

Esses são os formatos de arquivo mais populares. Com tudo isso em mente, você pode escrever um pequeno script que usa o comando apropriado, dependendo da extensão do arquivo que você atribui a ele:

#!/usr/bin/env bash

for file in "$@"
do
    printf "\n-----\nArchive '%s'\n-----\n" "$file"
    ## Get the file's extension
    ext=${file##*.}
    ## Special case for compressed tar files. They sometimes
    ## have extensions like tar.bz2 or tar.gz etc.
    [[ "$(basename "$file" ."$ext")" =~ \.tar$ ]] && ext="tgz"

    case $ext in
        7z)
            type 7z >/dev/null 2>&1 && 7z l "$file" || 
            echo "ERROR: no 7z program installed"
            ;;
        tar|tbz|tgz)
            type tar >/dev/null 2>&1 && tar tf "$file"|| 
            echo "ERROR: no tar program installed"
            ;;
        rar)
            type rar >/dev/null 2>&1 && rar v "$file"|| 
            echo "ERROR: no rar program installed"
            ;;
        zip)
            type zip >/dev/null 2>&1 && zip -sf "$file"|| 
            echo "ERROR: no zip program installed"
            ;;
        *)
            echo "Unknown extension: '$ext', skipping..."
            ;;
    esac
done

Salve esse script no seu PATHe torne-o executável. Você pode listar o conteúdo de qualquer arquivo:

$ list_archive.sh foo.rar foo.tar.bz foo.tar.gz foo.tbz foo.zip

-----
Archive 'foo.rar'
-----

RAR 4.20   Copyright (c) 1993-2012 Alexander Roshal   9 Jun 2012
Trial version             Type RAR -? for help

Archive foo.rar

Pathname/Comment
                  Size   Packed Ratio  Date   Time     Attr      CRC   Meth Ver
-------------------------------------------------------------------------------
 dir1/subdir1/file
                     0        8   0% 30-03-15 19:00 -rw-r--r-- 00000000 m3b 2.9
 dir1/file
                     0        8   0% 30-03-15 19:29 -rw-r--r-- 00000000 m3b 2.9
 dir1/subdir1
                     0        0   0% 30-03-15 19:00 drwxr-xr-x 00000000 m0  2.0
 dir1
                     0        0   0% 30-03-15 19:29 drwxr-xr-x 00000000 m0  2.0
 dir2
                     0        0   0% 30-03-15 19:07 drwxr-xr-x 00000000 m0  2.0
-------------------------------------------------------------------------------
    5                0       16   0%


-----
Archive 'foo.tar.bz'
-----
dir1/
dir1/subdir1/
dir1/subdir1/file
dir1/file
dir2/

-----
Archive 'foo.tar.gz'
-----
dir1/
dir1/subdir1/
dir1/subdir1/file
dir1/file
dir2/

-----
Archive 'foo.tbz'
-----
dir1/
dir1/subdir1/
dir1/subdir1/file
dir1/file
dir2/

-----
Archive 'foo.zip'
-----
Archive contains:
  dir1/
  dir1/subdir1/
  dir1/subdir1/file
  dir1/file
  dir2/
Total 5 entries (0 bytes)

E como alguém mencionou esse editor menor, naturalmente, o emacs também pode fazer isso:

emacs mostrando o conteúdo de um arquivo

terdon
fonte
6

Por que não usar vimpara procurar seu arquivo morto e abrir arquivos (pelo menos arquivos semelhantes a texto):

vim archive.tar.gz

insira a descrição da imagem aqui

Pressione as teclas de seta para rolar e Enterabrir um arquivo.

Sylvain Pineau
fonte
4

O Midnight Commander ( mc) também possui um bom visualizador de arquivos compactados, embora eu considere isso meio trapaceiro, já que o mc é um gerenciador de arquivos, embora seja baseado em texto.

Além disso, se tudo o que você deseja é ver o que há dentro dos arquivos compactados, você pode aprender o comando "view" para cada compressor. tar tzvfmostrará o conteúdo de um arquivo tar, unzip -lfará isso para um arquivo zip e assim por diante.

roadmr
fonte
2

Usar view filename.tar.gz também funcionará. da mesma maneira que o vim, mas sem permissões de gravação.

Jeff
fonte
2

lesspipeé um script de shell instalado por padrão como parte do lesspacote que pode listar o conteúdo de um tar.gzarquivo morto, além de vários outros formatos comuns de arquivo morto.

$ lesspipe example.tar.gz
drwxrwxr-x ubuntu/ubuntu     0 2018-11-16 05:32 example/
-rw-rw-r-- ubuntu/ubuntu     7 2018-11-16 05:32 example/ask.txt
-rw-rw-r-- ubuntu/ubuntu     7 2018-11-16 05:32 example/ubuntu.txt

É chamado pelo lesscomando ( consulte a resposta de Oli ) como um pré-processador de entrada se a $LESSOPENvariável de ambiente estiver configurada adequadamente.

Se estiver se aventurando, dê uma olhada em vi /usr/bin/lesspipequais comandos ele usa. Para arquivos que correspondem à tar.gzextensão, podemos ver que ele é usado tar tzvfsob o capô, juntamente com a --force-localopção de desativar um recurso obscuro tarque, de outra forma, confundir dois pontos no nome do arquivo com um comando para usar uma unidade de fita remota:

*.tar.gz|*.tgz|*.tar.z|*.tar.dz)
        tar tzvf "$1" --force-local

Observe que, como foi desenvolvido principalmente como pré-processador less, não produzirá nada se não reconhecer o tipo de arquivo. Notei que alguns .tar.gzarquivos que baixei não funcionavam porque na verdade não usavam a compactação gzip, apesar do nome do arquivo.

anjsimmo
fonte
0

Se você deseja visualizar o conteúdo de um arquivo específico dentro de um archive sem extrair o archive ou gravar no disco de qualquer forma, use o sinalizador -O (capital o) para gravar no stdout em vez de em um arquivo.

tar -Oxvf gerald.tar.gz /path/to/sandra.txt | less

Verifique se o O vem antes do f ou ele tenta analisar o O como um nome de arquivo.

Mobus Dorphin
fonte