Jak mogę wyświetlić zawartość pliku tar.gz bez wypakowywania z wiersza poleceń?


243

Chcę zobaczyć zawartość (listę plików i folderów) archiwum, na przykład tar.gzplik bez rozpakowywania go.

Czy są na to jakieś metody?

Odpowiedzi:


261

Uruchom poniższe polecenie w terminalu, aby zobaczyć zawartość pliku tar.gz bez wypakowywania go:

tar -tf filename.tar.gz

zrzut ekranu z listą skompresowanych plików tarball w terminalu

-t, --list Wyświetla
zawartość archiwum. Argumenty są opcjonalne. Po podaniu określają nazwiska członków do wyświetlenia.


1
robi te wszystkie przykłady, aby zajrzeć do skompresowanego pliku, działa również na inne typy formatów. jak zip, rar, smoła itp.?
Ciasto piekarz

3
tar -tvf xxx.tgzpokazałoby to również szczegółowe właściwości plików.
Eric Wang

4
treetar -tf filename.tar.gz | tree
potokuj

Do zip / rar użyj unzip -l/unrar -l
pLumo

Jeśli chcesz wyświetlić listę do określonej głębokości / poziomu, zobacz tylko tutaj .
holzkohlengrill

119

Możesz także użyć vima

vim filename.tar.gz

8
To jest niesamowite. Możesz także zobaczyć zawartość plików!
Nico

1
Lub użyć edytora Ex: ex +%p foo.tar.gz.
kenorb

@Nico Jak to wykorzystać, aby zobaczyć zawartość pliku w tgz?
1252748,

1
Po otwarciu pliku de przy pomocy vim ( vim file.tar.gz) pojawia się komunikat „Wybierz plik za pomocą kursora i naciśnij ENTER”. Po prostu przesuń kursor nad plikiem i naciśnij ENTER.
Nico,

2
Dzięki ogromnemu archiwum musisz być cierpliwy. Załadowanie struktury folderów może być bardzo długie. :-)
Hugo H

41

lessmoże również otwierać archiwa gzskompresowane i nieskompresowane tar. Zapewnia również piękny efekt ls -lwyjściowy:

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

A ponieważ jest less, możesz go przewijać, przeszukiwać itp. Jednak nie udaje mu się to z innymi algorytmami kompresji (z mojego doświadczenia).


4
Nie działało dla mnie. Wyświetlany jako plik binarny.
JeromeJ

2
Jesteś pewien, że nie masz aliasspecjalnych opcji less, których tu nie pokazujesz? Próbowałem to zobaczyć, ale to nie działało. Nie mam skonfigurowanych aliasów less.
code_dredd

36

Można użyć polecenia Z: zcat, zless, zgrep.

Aby wyświetlić zawartość pliku, użyj:

zcat file.gz   

Aby grep coś użyć:

zgrep test file.gz   

Aby sprawdzić różnicę między plikami, użyj:

zdiff file1.gz file2.gz

To tylko kilka przykładów, jest ich o wiele więcej.


9

tar„s -tflag wyświetli zawartość dla Ciebie. Dodaj to do innych flag (tak -tvfzdla a tar.gz, -tvfja tar.bz2, itp.) I możesz przeglądać bez rozpakowywania. Stamtąd można dość łatwo wyodrębnić pojedyncze pliki

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

Dużym problemem tarjest zapamiętywanie wszystkich pozostałych flag . Dlatego zwykle polegam na 7z(w p7zip-fullpakiecie) na całej archiwizacji. Nie twierdzę, że jest całkowicie lepszy, ale obsługuje prawie wszystko (bez konieczności określania typu kompresji), a argumenty są logiczne.

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

Z pewnością jest mniej zdolny, ale nie potrzebujesz strony podręcznika, aby z niego korzystać.

Istnieje również Midnight Commander ( mc). Jest to wszechstronne narzędzie do quasi-graficznego zarządzania plikami opartymi na terminalach, a po lekkich testach pozwala tylko przeglądać zarówno archiwa, jak .tar.gzi .7zarchiwa. Nie jestem pewien, ile innych obsługuje.


t-ar kiedyś, a nazwa rzeczywiście oznacza archiwizator taśm , który krzyczy sekwencyjnie i jest w wielu przypadkach PIA. Zwłaszcza, że ​​nieunikniona podwójna tar + gz jest po prostu okrutna. Teraz również przenoszę się do 7zip.
Frank Nocke,

9

To zależy od pliku. Większość programów (de) kompresji ma flagę z listą zawartości archiwum.

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

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

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

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

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

To większość popularnych formatów archiwów. Mając to na uwadze, możesz napisać mały skrypt, który używa odpowiedniej komendy, w zależności od rozszerzenia pliku, który jej podajesz:

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

Zapisz ten skrypt w swoim PATHpliku i wykonaj go. Następnie możesz wyświetlić zawartość dowolnego archiwum:

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

A ponieważ ktoś wspomniał o tym mniejszym edytorze, oczywiście emacs może to zrobić:

emacs pokazujący zawartość archiwum


6

Dlaczego nie użyć vimdo przeglądania swojego archiwum i otwierania plików (przynajmniej plików tekstowych):

vim archive.tar.gz

wprowadź opis zdjęcia tutaj

Naciskaj klawisze strzałek, aby przewijać i Enterotwierać plik.


4

Midnight Commander ( mc) ma również dobrą, skompresowaną przeglądarkę plików, chociaż uważam to za trochę oszukiwania, ponieważ mc jest menedżerem plików, choć tekstowym.

Ponadto, jeśli chcesz tylko zobaczyć, co znajduje się w skompresowanych archiwach, możesz nauczyć się polecenia „widok” dla każdej sprężarki. tar tzvfpokaże zawartość pliku tar, unzip -lzrobi to dla pliku zip i tak dalej.


2

Korzystanie view filename.tar.gz również będzie działać. podobnie jak robi to vim, ale bez uprawnień do zapisu.


2

lesspipeto skrypt powłoki instalowany domyślnie jako część lesspakietu, który może wyświetlać zawartość tar.gzarchiwum, a także szereg innych popularnych formatów plików archiwów.

$ 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

Jest wywoływany przez lesspolecenie ( patrz odpowiedź Oli ) jako preprocesor wejściowy, jeśli $LESSOPENzmienna środowiskowa jest odpowiednio ustawiona.

Jeśli masz ochotę na przygodę, zrób szczyt, vi /usr/bin/lesspipeaby zobaczyć, jakich poleceń używa. W przypadku plików pasujących do tar.gzrozszerzenia widzimy, że używa ono tar tzvfpod maską wraz z --force-localopcją wyłączenia niejasnej funkcji tar, która w przeciwnym razie pomieszałaby dwukropki w nazwie pliku z poleceniem użycia zdalnego napędu taśmowego:

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

Zauważ, że ponieważ jest przede wszystkim zaprojektowany jako preprocesor less, nie wypisze niczego, jeśli nie rozpozna typu pliku. Zauważyłem, że niektóre .tar.gzpliki, które pobrałem, nie będą działać, ponieważ w rzeczywistości nie używają kompresji gzip pomimo nazwy pliku.


0

Jeśli chcesz wyświetlić zawartość określonego pliku w archiwum bez wyodrębniania go lub zapisywania na dysk w jakikolwiek sposób, użyj flagi -O (wielka o), aby zapisać na standardowe wyjście zamiast pliku.

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

Upewnij się, że O jest przed f lub spróbuje parsować O jako nazwę pliku.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.