Tar.gz dosyasının içeriğini komut satırından ayıklamadan nasıl görebilirim?


243

Bir arşivin içeriğini (dosya ve klasörlerin listesini), örneğin çıkartmadan bir tar.gzdosyayı görmek istiyorum .

Bunu yapmak için herhangi bir yöntem var mı?

Yanıtlar:


261

Bir tar.gz dosyasının içeriğini ayıklamadan görmek için terminalde aşağıdaki komutu çalıştırın:

tar -tf filename.tar.gz

Terminalde sıkıştırılmış tarball dosyalarının listelenmesinin ekran görüntüsü

-t, --list
Bir arşivin içeriğini listeler . Argümanlar isteğe bağlıdır. Verildiğinde, listelenecek üyelerin adlarını belirtirler.


1
Tüm bu örnekleri sıkıştırılmış dosyanın içine bakmak için diğer format türlerinde de çalışır. zip gibi, rar, katran vb.
Ciasto piekarz

3
tar -tvf xxx.tgzBu aynı zamanda dosyaların detay özelliklerini gösterir.
Eric Wang

4
treeBir ağaç görünümü görmek için borutar -tf filename.tar.gz | tree
blockloop

Zip / rar kullanımı için unzip -l/unrar -l
pLumo

Belirli bir derinlik / seviyeye kadar listelemek istiyorsanız sadece burada görün .
holzkohlengrill

119

Ayrıca vim kullanabilirsiniz

vim filename.tar.gz

8
Bu harika. Ayrıca dosyaların içeriğini de görebilirsiniz!
Nico

1
Veya Ex düzenleyici kullanın: ex +%p foo.tar.gz.
kenorb

@Nico Bunu, tgz içindeki bir dosyanın içeriğini görmek için nasıl kullanırsınız?
1252748

1
De vim ( vim file.tar.gz) ile de dosyasını açtığınızda "İmleci olan bir dosya seçin ve ENTER'a basın" yazıyor. Siz sadece bunu yapın, imleci bir dosyanın üzerine getirin ve ENTER'a basın.
Nico,

2
Büyük arşivde, sabırlı olmanız gerekir. Klasör yapısını yüklemek çok uzun olabilir. :-)
Hugo H

41

lessayrıca gzsıkıştırılmamış ve sıkıştırılmamış tararşivler de açabilir . Size güzel bir ls -lstil çıktısı verir :

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

Ve çünkü less, içinde gezinebilir, arayabilirsin, vb.


4
Benim için işe yaramadı. İkili dosya olarak görüntülenir.
JeromeJ

2
Burada göstermediğin aliasiçin özel seçeneklerin olmadığından emin misin less? Bunu görmeye çalıştım ama işe yaramadı. Kurulum için takma ad yok less.
code_dredd

36

Sen z komutunu kullanabilirsiniz: zcat, zless, zgrep.

Bir dosya içeriğini görüntülemek için kullanın:

zcat file.gz   

Bir şey kullanmak grep için:

zgrep test file.gz   

Dosya kullanımı arasındaki farkı kontrol etmek için:

zdiff file1.gz file2.gz

Bunlar sadece birkaç örnek, çok daha fazlası var.


9

tar'in -tbayrağı sizin için içeriği listeler. Bunu diğer bayraklarınıza ekleyin (yani -tvfza tar.gz, -tvfja tar.bz2vb. İçin) ve ayıklamadan göz atabilirsiniz. Oradan kolayca tek tek dosyaları ayıklayabilirsiniz

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

İle büyük bir sorun tarolduğunu tüm hatırlayarak diğer bayraklar . Bu yüzden genellikle tüm arşivlerimi yapmak için 7z( p7zip-fullpaketin) güvenirim . Tamamen daha iyi olduğunu iddia etmiyorum ama hemen hemen her şeyi destekliyor (sıkıştırma türünü belirtmek zorunda kalmadan) ve argümanlar mantıklı.

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

Kesinlikle daha az yetenekli, ancak kullanmak için man sayfasına ihtiyacınız yok .

Ayrıca Midnight Komutanı ( mc) da var. Bu yarı-grafik terminal tabanlı dosya yönetimi için bir all-around badass ve bazı hafif test ile sadece hem içine dolaşmalarını sağlar .tar.gzve .7zarşivler. Kaç tane desteklediğinden emin değilim.


t-ar eskiden ve adı gerçekten de sırayla çığlık atan ve çoğu zaman bir PIA olan teyp arşivleyiciyi ifade ediyor. Özellikle kaçınılmaz çift katran + gz olarak bu çok acımasız. Ayrıca şimdi 7zip'e geçiyoruz.
Frank Nocke

9

Bu dosyaya bağlı. Sıkıştırma programlarının çoğu, bir arşivin içeriğini listeleyen bir bayrağa sahiptir.

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

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

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

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

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

En popüler arşiv biçimlerinin çoğu budur. Bütün bunlar göz önüne alındığında, verdiğiniz dosyanın uzantısına bağlı olarak uygun komutu kullanan küçük bir komut dosyası yazabilirsiniz:

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

Bu betiği içine kaydedin PATHve çalıştırılabilir hale getirin. Ardından herhangi bir arşivin içeriğini listeleyebilirsiniz:

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

Ve birisi daha az editörden bahsettiğinden, tabii ki, emacs da bunu yapabilir:

arşiv içeriğini gösteren emac


6

Neden vimarşivinize göz atıp dosyaları açmıyorsunuz (en azından metin benzeri dosyalar):

vim archive.tar.gz

görüntü tanımını buraya girin

EnterBir dosyayı kaydırmak ve açmak için ok tuşlarına basın .


4

Midnight Commander ( mcbu mc beri hile biraz düşünün rağmen) ayrıca, iyi bir sıkıştırılmış dosya görüntüleyici olan olan bir dosya yöneticisi metin tabanlı bir de olsa.

Ayrıca, istediğiniz tek şey sıkıştırılmış arşivlerin içinde ne olduğunu görmekse, her kompresör için "view" komutunu öğrenebilirsiniz. tar tzvfBir tar dosyasının içeriğini gösterir, unzip -lbir zip dosyası için yapar, vb.


2

Kullanarak view filename.tar.gz da çalışacak. vim de aynı şekilde, ancak yazma izni olmadan.


2

lesspipelessbir tar.gzarşivin içeriğini ve diğer genel arşiv dosyası biçimlerinin bir listesini listeleyebilen , paketin bir parçası olarak varsayılan olarak yüklenen bir kabuk betiğidir .

$ 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

Ortam değişkeni uygun bir şekilde ayarlanmışsa , lesskomut tarafından ( bkz. Oli'nin cevabı ) giriş ön işlemcisi olarak adlandırılır $LESSOPEN.

Maceracı hissediyorsanız, vi /usr/bin/lesspipehangi komutları kullandığını görmek için bir zirve yapın . Eşleşen dosyalar için tar.gzuzantıyı, bunu kullandığını görebilirsiniz tar tzvfbirlikte kaputun altında --force-localbir karanlık özelliği devre dışı bırakmak için seçenek taraksi şaşırtmak olacağını dosya içinde iki nokta üst üste uzak teyp sürücüsünü kullanmak için bir komutla:

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

Öncelikle bir önişlemci olarak tasarlandığından less, dosya türünü tanımıyorsa hiçbir şey çıkarmayacağını unutmayın. .tar.gzİndirdiğim bazı dosyaların işe yaramayacağını fark ettim çünkü dosya adına rağmen gerçekte gzip sıkıştırması kullanmıyorlardı.


0

Bir arşiv içindeki belirli bir dosyanın içeriğini arşivi ayıklamadan veya herhangi bir şekilde diske yazmadan görüntülemek istiyorsanız, dosya yerine stdout'a yazmak için -O (büyük harf o) bayrağını kullanın.

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

O'nun f'den önce geldiğinden emin olun, yoksa O'yu dosya adı olarak ayrıştırmaya çalışır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.