Frage Wie kann ich den Inhalt der tar.gz-Datei anzeigen, ohne von der Befehlszeile zu extrahieren?


Ich möchte den Inhalt (Liste der Dateien und Ordner) eines Archivs sehen, z tar.gz Datei ohne zu extrahieren es.

Gibt es Methoden dafür?


196
2017-12-19 05:46


Ursprung


Versuchen man tar  ... - Reinier Post


Antworten:


Führen Sie den folgenden Befehl im Terminal aus, um den Inhalt einer tar.gz-Datei anzuzeigen, ohne sie zu extrahieren:

tar -tf filename.tar.gz

screenshot of listing compressed tarball files in the terminal


210
2017-12-19 05:47



funktionieren all diese Beispiele, um in komprimierte Dateien zu schauen, auch für andere Arten von Formaten. wie zip, rar, teer etc.? - Ciasto piekarz
tar -tvf xxx.tgz Dies würde auch detaillierte Eigenschaften von Dateien anzeigen. - Eric Wang
Rohr es zu tree um eine Baumansicht zu sehen tar -tf filename.tar.gz | tree - blockloop
Für zip / rar verwenden unzip -l / unrar -l - RoVo


Sie können auch vim verwenden

vim filename.tar.gz

95
2017-12-19 05:49



Das ist fantastisch. Sie können auch den Inhalt der Dateien sehen! - Nico
Oder verwende Ex-Editor: ex +%p foo.tar.gz. - kenorb
@Nico Wie benutzt man das um den Inhalt einer Datei im tgz zu sehen? - 1252748
Wenn Sie die Datei mit vim öffnen (vim file.tar.gz) Es heißt "Wählen Sie eine Datei mit dem Cursor und drücken Sie ENTER". Sie tun genau das, bewegen Sie den Cursor über eine Datei und drücken Sie ENTER. - Nico
Bei einem riesigen Archiv muss man nur geduldig sein. Das Laden der Ordnerstruktur kann sehr lange dauern. :-) - Hugo H


less kann auch öffnen gz-komprimiert und unkomprimiert tar Archiv. Es gibt dir ein schönes ls -l Stilausgabe auch:

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

Und weil es ist lessSie können scrollen, suchen, usw. Aber es versagt miserabel mit anderen Kompressionsalgorithmen (meiner Erfahrung nach).


36
2017-12-19 14:00



Hat nicht für mich gearbeitet. Wird als Binärdatei angezeigt. - JeromeJ
Bist du sicher, dass du keine hast? alias mit speziellen Optionen für less dass du hier nicht zeigst? Ich habe das gerade versucht, um zu sehen, aber es hat nicht funktioniert. Ich habe keine Alias-Einstellungen für less. - code_dredd


Sie könnten den z-Befehl verwenden: zcat, zless, zgrep.

Um den Inhalt einer Datei anzuzeigen, verwenden Sie:

zcat file.gz   

Um etwas zu nutzen, benutze:

zgrep test file.gz   

Um den Unterschied zwischen Dateien zu überprüfen, verwenden Sie:

zdiff file1.gz file2.gz

Dies sind nur ein paar Beispiele, es gibt viele mehr.


32
2018-03-30 15:53





tarist es -t Flag wird Inhalte für Sie auflisten. Fügen Sie das zu Ihren anderen Flaggen hinzu (so -tvfz Für ein tar.gz, -tvfj Für ein tar.bz2usw.) und Sie können blättern, ohne zu extrahieren. Von dort können Sie ganz einfach einzelne Dateien extrahieren

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

Das große Problem mit tar ist Erinnere dich an all das andere Flaggen. Also verlasse ich mich normalerweise darauf 7z (des p7zip-full Paket), um alle meine Archivierung zu tun. Ich behaupte nicht, dass es vollkommen besser ist, aber es unterstützt fast alles (ohne den Kompressionstyp angeben zu müssen) und die Argumente sind logisch.

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

Es ist sicherlich weniger fähig, aber Sie nicht brauchen die man-Seite, um es zu benutzen.

Es gibt auch Midnight Commander (mc). Dies ist ein Alleskönner für die quasi-grafische Terminal-basierte Dateiverwaltung und mit einigen Lichttests können Sie einfach beides durchsuchen .tar.gz und .7z Archiv. Ich bin mir nicht sicher, wie viele andere es unterstützt.


8
2018-03-30 15:50



t-ar war einmal und der Name steht tatsächlich Band Archiver, der sequenziell schreit und in vielen Fällen ein PIA ist. Besonders als das unvermeidliche doppelte tar + gz Das ist einfach grausam. Auch jetzt zu 7zip verschieben. - Frank Nocke


Nun, das hängt von der Datei ab. Die meisten (De-) Komprimierungsprogramme haben ein Flag, das den Inhalt eines Archivs auflistet.

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

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

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

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

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

Das sind die meisten der beliebtesten Archivformate. In diesem Sinne könnten Sie ein kleines Skript schreiben, das den entsprechenden Befehl verwendet, abhängig von der Erweiterung der Datei, die Sie ihm geben:

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

Speichere das Skript in deinem PATH und mache es ausführbar. Sie können dann den Inhalt eines beliebigen Archivs auflisten:

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

Und da jemand diesen kleineren Redakteur erwähnt hat, können Emacs das natürlich auch tun:

emacs showing an archive's contents


8
2018-03-30 16:45





Warum nicht benutzen? vim Durchsuchen Sie Ihr Archiv und öffnen Sie Dateien (mindestens textähnliche Dateien):

vim archive.tar.gz

enter image description here

Blättern Sie mit den Pfeiltasten und Eingeben um eine Datei zu öffnen.


6
2018-03-30 15:43





Mitternachtskommandant (mc) hat auch eine gute komprimierte Dateibetrachter, obwohl ich dies ein bisschen betrügen seit mc ist ein Dateimanager, wenn auch ein textbasierter.

Wenn Sie nur sehen möchten, was sich in komprimierten Archiven befindet, können Sie den Befehl "view" für jeden Komprimierer lernen. tar tzvf zeigt Ihnen den Inhalt einer TAR-Datei, unzip -l wird es für eine Zip-Datei tun, und so weiter.


4
2018-03-30 15:52





Verwenden view filename.tar.gz  wird auch funktionieren. Ähnlich wie vim, aber ohne Schreibrechte.


2
2018-01-22 13:44