Tar.gz dosyasının içeriğini komut satırından çıkmadan nasıl görüntüleyebilirim?

194

Bir arşivin içeriğini (dosya ve klasörlerin listesini), örneğin, tar.gz dosyasını ayıklamadan görmek istiyorum.

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

    
sordu Avinash Raj 19.12.2013 06:46

9 cevap

210

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

tar -tf filename.tar.gz

    
verilen cevap Avinash Raj 19.12.2013 06:47
94

Ayrıca vim kullanabilirsiniz

vim filename.tar.gz
    
verilen cevap s.m 19.12.2013 06:49
36

less ayrıca gz sıkıştırılmış ve sıkıştırılmamış tar arşivlerini de açabilir. Size çok hoş ls -l stil çıktı 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 less olduğundan, içinde gezinebilir, arama yapabilir, vb. Bununla birlikte, diğer sıkıştırma algoritmalarıyla (deneyimim arasında) zahmetsizce başarısız olur.

    
verilen cevap Oli 19.12.2013 15:00
31

z komutunu kullanabilirsiniz: zcat , zless , zgrep .

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

zcat file.gz   

Bir şeyleri kullanmak için:

zgrep test file.gz   

Dosyalar arasındaki farkı kontrol etmek için:

zdiff file1.gz file2.gz

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

    
verilen cevap krt 30.03.2015 17:53
8

tar 's -t bayrağı sizin için içeriği listeleyecektir. Bunu diğer işaretlerinize ekleyin (bu yüzden -tvfz için tar.gz , -tvfj için tar.bz2 , vb) ve ayıklamadan gezinebilirsiniz. Oradan kolayca tek dosyaları ayıklayabilirsiniz

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

tar ile ilgili büyük sorun, tüm diğer bayrakları hatırla . Bu yüzden, tüm arşivlememi yapmak için genellikle 7z ( p7zip-full paketinden) güveniyorum. Tamamen daha iyi olduğunu iddia etmeyeceğim ama neredeyse 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

Bu kesinlikle daha az yeteneklidir, ancak kullanmak için kullanıcı sayfasına gerekmiyor .

Ayrıca Midnight Commander ( mc ) var. Bu, yarı-grafiksel terminal tabanlı dosya yönetimi için bir all-around badass ve bazı ışık testleri ile sadece .tar.gz ve .7z arşivlerine göz atmanıza izin veriyor. Başka kaç tane desteklediğinden emin değilim.

    
verilen cevap Oli 30.03.2015 17:50
8

Peki, bu dosyaya bağlı. Çoğu (de) sıkıştırma programında bir arşivin içeriğini listeleyen bir bayrak bulunur.

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

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

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

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

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

Bu, daha popüler arşiv biçimlerinin çoğudur. Tüm 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 "[email protected]"
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 komut dosyasını PATH 'inize kaydedin ve çalıştırılabilir yapın. 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örün bahsetmesinden bu yana, doğal olarak, emacs bunu da yapabilir:

    
verilen cevap terdon 30.03.2015 18:45
6

Arşivinize göz atmak ve dosyaları açmak için neden vim kullanılmıyor (en az metin benzeri dosyalar):

vim archive.tar.gz

Kaydırmak için ok tuşlarına ve bir dosyayı açmak için Enter tuşuna basın.

    
verilen cevap Sylvain Pineau 30.03.2015 17:43
4

Geceyarısı Komutanı ( mc ) iyi bir sıkıştırılmış dosya görüntüleyiciye sahip olsa da, bunu bir metin tabanlı olsa da bir dosya yöneticisi olan mc 'den beri aldattığımı düşünüyorum.

Ayrıca, tek yapmanız gereken sıkıştırılmış arşivlerin içinde ne olduğunu görmekse, her kompresör için "view" komutunu öğrenebilirsiniz. tar tzvf bir tar dosyasının içeriğini gösterir, unzip -l bir zip dosyası için bunu yapar.

    
verilen cevap roadmr 30.03.2015 17:52
2

Kullanma % Co_de% ayrıca çalışacak. Aynı şekilde vim de yapar, ancak yazma izni yoktur.

    
verilen cevap Jeff 22.01.2018 14:44

Etiketlerdeki diğer soruları oku