コマンドラインから抽出せずにtar.gzファイルの内容を表示するにはどうすればよいですか?


246

アーカイブの内容(ファイルとフォルダーのリスト)、たとえば tar.gzファイルを抽出せずに表示したい。

それを行う方法はありますか?

回答:


265

ターミナルで次のコマンドを実行して、tar.gzファイルの内容を抽出せずに表示します。

tar -tf filename.tar.gz

ターミナルで圧縮されたtarballファイルをリストするスクリーンショット

-t、-list
アーカイブの内容を一覧表示します。引数はオプションです。指定すると、リストするメンバーの名前を指定します。


1
圧縮ファイルの内部を見るためのこれらすべての例は、他のタイプのフォーマットでも機能します。zip、rar、tarなど?
シアストピエカルツ

3
tar -tvf xxx.tgzこれにより、ファイルの詳細プロパティも表示されます。
エリックワン

4
treeツリービューを表示するためにパイプするtar -tf filename.tar.gz | tree
-blockloop

ZIP / RARの使用のためにunzip -l/unrar -l
pLumo

特定の深さ/レベルまでリストする場合は、こちらを参照してください
holzkohlengrill

120

vimを使用することもできます

vim filename.tar.gz

9
これはすごい。ファイルの内容も見ることができます!
ニコ14年

1
または、Exエディターを使用しますex +%p foo.tar.gz
ケノーブ

@Nicoこれを使用して、tgz内のファイルの内容を表示するにはどうしますか?
1252748 16

1
vim(vim file.tar.gz)でファイルを開くと、「カーソルでファイルを選択してEnterキーを押してください」と表示されます。それだけで、カーソルをファイルの上に移動してEnterキーを押します。
ニコ

2
巨大なアーカイブを使用すると、忍耐する必要があります。フォルダー構造のロードには非常に時間がかかる場合があります。:
ヒューゴH

41

lessgz-圧縮および非圧縮tarアーカイブを開くこともできます。それはあなたにも素敵なls -lスタイルの出力を提供します:

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

そして、それはなのでless、スクロールしたり、検索したりすることができます。しかし、他の圧縮アルゴリズムでは惨めに失敗します(私の経験では)。


4
私のために働かなかった。バイナリファイルとして表示されます。
JeromeJ

2
あなたは必ず、あなたは持っていないaliasため、特別なオプションを持つlessあなたがここに表示されないていることを?私はそれを見てみましたが、うまくいきませんでした。のエイリアスが設定されていませんless
code_dredd

37

あなたは、zコマンドを使用することができます:zcatzlesszgrep

ファイルのコンテンツを表示するには、次を使用します。

zcat file.gz   

何かをgrepするには:

zgrep test file.gz   

ファイル間の違いを確認するには:

zdiff file1.gz file2.gz

これらはほんの一例であり、もっとたくさんあります。


9

tar-tフラグはコンテンツをリストします。それを他のフラグに追加して(-tvfza tar.gz-tvfja tar.bz2、a など)、抽出せずに参照できます。そこから単一のファイルを非常に簡単に抽出できます

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

の大きな問題tar他のすべてのフラグを覚えていることです。そのため、私は通常、すべてのアーカイブを7zp7zip-fullパッケージの)に依存しています。私はそれが完全に優れていると主張するつもりはありませんが、ほとんどすべてをサポートし(圧縮タイプを指定する必要なし)、引数は論理的です。

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

確かに機能は劣りますが、使用するためにマニュアルページは必要ありません。

ミッドナイトコマンダー(mc)もあります。これは、準グラフィカルな端末ベースのファイル管理にとって万能のワルです。いくつかの軽いテストを行うだけで、両方.tar.gz.7zアーカイブを閲覧できます。他にいくつサポートされているのかわかりません。


t-arは以前使用されていた名前であり、実際にはテープアーカイバを表しています。これは連続して叫び、多くの場合PIAです。特に避けられないダブルタール+ gzとして、これはただ残酷です。また、7zipに移行しています。
フランクノッケ

9

まあ、それはファイルに依存します。ほとんどの(圧縮解除)プログラムには、アーカイブの内容をリストするフラグがあります。

  1. tar/ 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 ファイル

    $ 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 ファイル

    $ 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 ファイル

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

これは、最も一般的なアーカイブ形式のほとんどです。これらすべてを念頭に置いて、ファイルの拡張子に応じて適切なコマンドを使用する小さなスクリプトを作成できます。

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

そのスクリプトをに保存し、PATH実行可能にします。その後、アーカイブの内容を一覧表示できます。

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

そして、誰かがより少ない編集者に言及したので、当然、emacsもこれを行うことができます:

アーカイブの内容を示すemacs


6

vimアーカイブを閲覧してファイル(少なくともテキストのようなファイル)を開くのに使用してはどうですか:

vim archive.tar.gz

ここに画像の説明を入力してください

矢印キーを押してスクロールしEnter、ファイルを開きます。


4

Midnight Commander(mc)には優れた圧縮ファイルビューアもあります、mc テキストベースであります、ファイルマネージャであるため、これは少しごまかしと考えています。

また、圧縮アーカイブ内の内容を確認するだけであれば、各コンプレッサーの「表示」コマンドを学習できます。tar tzvftarファイルの内容を表示unzip -lし、zipファイルに対して実行します。


2

を使用して view filename.tar.gz も動作します。vimとほぼ同じ方法ですが、書き込み権限はありません。


2

lesspipelessパッケージの一部としてデフォルトでインストールされるシェルスクリプトであり、tar.gzアーカイブの内容やその他の一般的なアーカイブファイル形式を一覧表示できます。

$ 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

環境変数が適切に設定されている場合、入力プリプロセッサとしてlessコマンド(Oliの回答を参照)によって呼び出され$LESSOPENます。

冒険心があれば、vi /usr/bin/lesspipeどのコマンドを使用しているかを見てみましょう。tar.gz拡張子に一致するファイルについては、ファイル名のコロンをリモートテープドライブを使用するコマンドと混同するようなあいまいな機能を無効にするオプションtar tzvfとともに、フードの下で使用--force-localすることがわかります。tar

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

主にのプリプロセッサとして設計されているためless、ファイルタイプが認識されない場合は何も出力されないことに注意してください。.tar.gzダウンロードした一部のファイルは、ファイル名にかかわらずgzip圧縮を実際には使用していないため機能しないことに気付きました。


0

アーカイブを抽出したり、何らかの方法でディスクに書き込んだりせずに、アーカイブ内の特定のファイルの内容を表示する場合は、-O(大文字のo)フラグを使用して、ファイルではなくstdoutに書き込みます。

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

Oがfの前にあることを確認してください。そうしないと、Oをファイル名として解析しようとします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.