Domanda Come posso visualizzare il contenuto del file tar.gz senza estrarlo dalla riga di comando?


Voglio vedere il contenuto (elenco di file e cartelle) di un archivio, ad esempio a tar.gz file senza estrarre esso.

Ci sono dei metodi per farlo?


196
2017-12-19 05:46


origine


Provare man tar  ... - Reinier Post


risposte:


Esegui il comando sottostante nel terminale per vedere il contenuto di un file tar.gz senza estrarlo:

tar -tf filename.tar.gz

screenshot of listing compressed tarball files in the terminal


210
2017-12-19 05:47



fa tutti questi esempi per guardare all'interno del file compresso funziona anche su altri tipi di formato. come zip, rar, tar ecc.? - Ciasto piekarz
tar -tvf xxx.tgz questo mostrerebbe anche le proprietà dei dettagli dei file. - Eric Wang
pipe it to tree per vedere una vista ad albero tar -tf filename.tar.gz | tree - blockloop
Per uso zip / rar unzip -l / unrar -l - RoVo


Puoi anche usare vim

vim filename.tar.gz

95
2017-12-19 05:49



Questo e spettacolare. Puoi anche vedere il contenuto dei file! - Nico
Oppure usa l'editor Ex: ex +%p foo.tar.gz. - kenorb
@ Nico Come lo usi per vedere il contenuto di un file all'interno del tgz? - 1252748
Quando apri il file con vim (vim file.tar.gz) dice "Seleziona un file con il cursore e premi INVIO". Fai proprio questo, sposta il cursore su un file e premi INVIO. - Nico
Con un enorme archivio devi solo essere paziente. Può essere molto lungo caricare la struttura delle cartelle. :-) - Hugo H


less può anche aprire gz-compresso e non compresso tar archivi. Ti dà una bella ls -l output di stile troppo:

$ 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 perché è less, puoi scorrerlo, cercarlo, ecc. Tuttavia fallisce miseramente con altri algoritmi di compressione (nella mia esperienza).


36
2017-12-19 14:00



Non ha funzionato per me. Visualizzato come file binario. - JeromeJ
Sei sicuro di non averne uno alias con opzioni speciali per less che non stai mostrando qui? Ho solo provato a vederlo, ma non ha funzionato. Non ho alcun setup di alias per less. - code_dredd


Potresti usare il comando z: zcat, zless, zgrep.

Per visualizzare un contenuto di file, utilizzare:

zcat file.gz   

Per grep qualcosa usa:

zgrep test file.gz   

Per controllare la differenza tra i file utilizzare:

zdiff file1.gz file2.gz

Questi sono solo alcuni esempi, ce ne sono molti altri.


32
2018-03-30 15:53





tar'S -t flag elencherà i contenuti per te. Aggiungilo alle altre bandiere (così -tvfz per un tar.gz, -tvfj per un tar.bz2, ecc.) e puoi sfogliare senza estrarre. Da lì puoi estrarre singoli file abbastanza facilmente

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

Il grande problema con tar è ricordando tutto il altre bandiere. Quindi di solito mi affido 7z (del p7zip-full pacchetto) per fare tutta la mia archiviazione. Non dirò che è del tutto migliore ma supporta quasi tutto (senza dover specificare il tipo di compressione) e gli argomenti sono logici.

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

È certamente meno capace, ma tu no bisogno la pagina man per usarlo.

C'è anche Midnight Commander (mc). Questo è un problema complesso per la gestione di file basati su terminali quasi grafici e con alcuni test della luce consente di navigare in entrambi .tar.gz e .7z archivi. Non sono sicuro di quanti altri supporti.


8
2018-03-30 15:50



t-ar era ed il nome rappresenta davvero nastro archiviatore, che urla sequenziale ed è in molti casi un PIA. Soprattutto come l'inevitabile doppio tar + gz questo è semplicemente crudele. Passando anche a 7zip ora. - Frank Nocke


Bene, questo dipende dal file. La maggior parte dei programmi di (de) compressione hanno un flag che elenca i contenuti di un archivio.

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

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

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

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

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

Questa è la maggior parte dei formati di archivio più popolari. Con tutto questo in mente, potresti scrivere un piccolo script che usa il comando appropriato a seconda dell'estensione del file che gli dai:

#!/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

Salva lo script nel tuo PATH e renderlo eseguibile. È quindi possibile elencare il contenuto di qualsiasi archivio:

$ 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 poiché qualcuno ha menzionato quell'editor minore, naturalmente, emacs può anche farlo:

emacs showing an archive's contents


8
2018-03-30 16:45





Perché non usare vim per esplorare il tuo archivio e aprire i file (almeno file di testo):

vim archive.tar.gz

enter image description here

Premere i tasti freccia per scorrere e accedere per aprire un file.


6
2018-03-30 15:43





Midnight Commander (mc) ha anche un buon visualizzatore di file compressi, anche se considero questo un po 'di imbrogli dal momento che mc è un file manager, anche se basato su testo.

Inoltre, se tutto quello che vuoi è vedere cosa c'è dentro gli archivi compressi, potresti imparare il comando "visualizza" per ogni compressore. tar tzvf mostrerà il contenuto di un file tar, unzip -l lo farà per un file zip, e così via.


4
2018-03-30 15:52





utilizzando view filename.tar.gz  funzionerà anche molto nello stesso modo in cui fa vim, ma senza permessi di scrittura.


2
2018-01-22 13:44