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


Eu quero ver o conteúdo (lista de arquivos e pastas) de um arquivo, por exemplo tar.gz Arquivo sem extrair isto.

Existem métodos para fazer isso?


197
2017-12-19 05:46


origem


Experimentar man tar  ... - Reinier Post


Respostas:


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

tar -tf filename.tar.gz

screenshot of listing compressed tarball files in the terminal


210
2017-12-19 05:47



Todos esses exemplos para procurar dentro de arquivos compactados também funcionam em outros tipos de formato. como zip, rar, tar etc. - Ciasto piekarz
tar -tvf xxx.tgz Isso também mostraria propriedades detalhadas dos arquivos. - Eric Wang
canalizá-lo para tree para ver uma visão em árvore tar -tf filename.tar.gz | tree - blockloop
Para uso de zip / rar unzip -l / unrar -l - RoVo


Você também pode usar o vim

vim filename.tar.gz

96
2017-12-19 05:49



Isso é incrível. Você também pode ver o conteúdo dos arquivos! - Nico
Ou use o editor Ex: ex +%p foo.tar.gz. - kenorb
@Nico Como você usa isso para ver o conteúdo de um arquivo dentro do tgz? - 1252748
Quando você abre o arquivo com o vim (vim file.tar.gz) diz "Selecione um arquivo com o cursor e pressione ENTER". Você faz exatamente isso, move o cursor sobre um arquivo e pressiona ENTER. - Nico
Com um enorme arquivo você só precisa ser paciente. Pode demorar muito para carregar a estrutura de pastas. :-) - Hugo H


less também pode abrir gz-comprimido e descompactado tar arquivos. Dá-lhe uma linda ls -l saída de estilo também:

$ 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 porque é less, você pode percorrê-lo, pesquisá-lo, etc. No entanto, ele falha miseravelmente com outros algoritmos de compressão (na minha experiência).


36
2017-12-19 14:00



Não funcionou para mim. Exibido como um arquivo binário. - JeromeJ
Tem certeza de que você não tem um alias com opções especiais para less que você não está mostrando aqui? Eu apenas tentei ver isso, mas não funcionou. Eu não tenho nenhuma configuração de aliases para less. - code_dredd


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

Para visualizar o uso de conteúdo de arquivos:

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.


32
2018-03-30 15:53





tar's -t flag irá listar o conteúdo para você. Adicione isso às suas outras bandeiras -tvfz para tar.gz, -tvfj para tar.bz2, etc) e você pode navegar sem extrair. De lá você pode extrair arquivos simples facilmente

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

O grande problema com tar é lembrando todo o outras bandeiras. Então eu costumo confiar 7z (do p7zip-full pacote) para fazer todo o meu arquivamento. Eu não vou dizer que é totalmente melhor, mas suporta quase tudo (sem ter que especificar o tipo de compressã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 necessidade a página do manual para usá-lo.

Há também o Midnight Commander (mc). Este é um all-around badass para gerenciamento de arquivos baseado em terminais quasi-gráficos e com alguns testes de luz, basta deixá-lo navegar em ambos .tar.gz e .7z arquivos. Não tenho certeza de quantos outros ele suporta.


8
2018-03-30 15:50



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


Bem, isso depende do arquivo. A maioria dos programas de compressão tem um sinalizador que lista o conteúdo de um arquivo.

  1. tar/tar.gz/tgz/tar.xz/tar.bz2/tbz arquivos

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

Essa é a maioria dos formatos de arquivo mais populares. Com tudo isso em mente, você pode escrever um pequeno script que use o comando apropriado, dependendo da extensão do arquivo que você der 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 PATH e torná-lo executável. Você pode então 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 showing an archive's contents


8
2018-03-30 16:45





Por que não usar vim para navegar no seu arquivo e abrir arquivos (pelo menos arquivos semelhantes a texto):

vim archive.tar.gz

enter image description here

Pressione as teclas de seta para rolar e Entrar para abrir um arquivo.


6
2018-03-30 15:43





Comandante da meia-noite (mc) também tem um bom visualizador de arquivos compactados, embora eu considere isso um pouco de trapaça desde mc é um gerenciador de arquivos, ainda que baseado em texto.

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


4
2018-03-30 15:52





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


2
2018-01-22 13:44