回答:
ターミナルで次のコマンドを実行して、tar.gzファイルの内容を抽出せずに表示します。
tar -tf filename.tar.gz
-t、-list
アーカイブの内容を一覧表示します。引数はオプションです。指定すると、リストするメンバーの名前を指定します。
tar -tvf xxx.tgz
これにより、ファイルの詳細プロパティも表示されます。
tree
ツリービューを表示するためにパイプするtar -tf filename.tar.gz | tree
unzip -l
/unrar -l
vimを使用することもできます
vim filename.tar.gz
ex +%p foo.tar.gz
。
vim file.tar.gz
)でファイルを開くと、「カーソルでファイルを選択してEnterキーを押してください」と表示されます。それだけで、カーソルをファイルの上に移動してEnterキーを押します。
less
gz
-圧縮および非圧縮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
、スクロールしたり、検索したりすることができます。しかし、他の圧縮アルゴリズムでは惨めに失敗します(私の経験では)。
alias
ため、特別なオプションを持つless
あなたがここに表示されないていることを?私はそれを見てみましたが、うまくいきませんでした。のエイリアスが設定されていませんless
。
tar
の-t
フラグはコンテンツをリストします。それを他のフラグに追加して(-tvfz
a tar.gz
、-tvfj
a tar.bz2
、a など)、抽出せずに参照できます。そこから単一のファイルを非常に簡単に抽出できます
tar -xvfz mybackup.tar.gz path/to/file
の大きな問題tar
は、他のすべてのフラグを覚えていることです。そのため、私は通常、すべてのアーカイブを7z
(p7zip-full
パッケージの)に依存しています。私はそれが完全に優れていると主張するつもりはありませんが、ほとんどすべてをサポートし(圧縮タイプを指定する必要なし)、引数は論理的です。
7z l archive.ext
7z e archive.ext path/to/file
確かに機能は劣りますが、使用するためにマニュアルページは必要ありません。
ミッドナイトコマンダー(mc
)もあります。これは、準グラフィカルな端末ベースのファイル管理にとって万能のワルです。いくつかの軽いテストを行うだけで、両方.tar.gz
と.7z
アーカイブを閲覧できます。他にいくつサポートされているのかわかりません。
まあ、それはファイルに依存します。ほとんどの(圧縮解除)プログラムには、アーカイブの内容をリストするフラグがあります。
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/
zip
ファイル
$ zip -sf foo.zip
Archive contains:
dir1/
dir2/
dir1/subdir1/
dir1/subdir1/file
dir1/subdir2/
dir1/subdir2/file
Total 6 entries (0 bytes)
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
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もこれを行うことができます:
lesspipe
less
パッケージの一部としてデフォルトでインストールされるシェルスクリプトであり、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圧縮を実際には使用していないため機能しないことに気付きました。
アーカイブを抽出したり、何らかの方法でディスクに書き込んだりせずに、アーカイブ内の特定のファイルの内容を表示する場合は、-O(大文字のo)フラグを使用して、ファイルではなくstdoutに書き込みます。
tar -Oxvf gerald.tar.gz /path/to/sandra.txt | less
Oがfの前にあることを確認してください。そうしないと、Oをファイル名として解析しようとします。