追加情報なしでコマンドラインでzipのファイルを一覧表示する方法

追加情報なしでコマンドラインでzipのファイルを一覧表示する方法

私のBashコマンドラインで次をunzip -l test.zip使用すると、次のような出力が表示されます。

Archive:  test.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
   810000  05-07-2014 15:09   file1.txt
   810000  05-07-2014 15:09   file2.txt
   810000  05-07-2014 15:09   file3.txt
---------                     -------
  2430000                     3 files

しかし、私はファイルの詳細を含む行だけに興味があります。

次のようにgrepを使用してフィルタリングしようとしました。

unzip -l test.zip | grep -v Length | grep -v "\-\-\-\-" | g -v Archive | grep -v " files"

ただし、長くてエラーが発生しやすい(たとえば、このリストのファイル名Archiveは削除されます)。

unzip -l(圧縮解除のマニュアルページを確認しましたが、何も見つかりません)またはこれを実行する他のツールを無効にする他のオプションはありますか?

私にとって重要なことは、実際にアーカイブを解凍するのではなく、その中にどのファイルがあるのか​​を確認することです。

ベストアンサー1

zipinfo -1 file.zip

または:

unzip -Z1 file.zip

ファイルのみがリストされます。

各ファイル名に関する追加情報が必要な場合は、次のことができます。

unzip -Zl file.zip | sed '1,2d;$d'

または:

unzip -l file.zip | sed '1,3d;$d' | sed '$d'

または(GNU仮定head):

unzip -l file.zip | tail -n +4 | head -n -2

libarchiveまたは、次のものを使用できますbsdtar

$ bsdtar tf test.zip
file1.txt
file2.txt
file3.txt
$ bsdtar tvf test.zip
-rw-rw-r--  0 1000   1000   810000 Jul  5  2014 file1.txt
-rw-rw-r--  0 1000   1000   810000 Jul  5  2014 file2.txt
-rw-rw-r--  0 1000   1000   810000 Jul  5  2014 file3.txt
$ bsdtar tvvf test.zip
-rw-rw-r--  0 1000   1000   810000 Jul  5  2014 file1.txt
-rw-rw-r--  0 1000   1000   810000 Jul  5  2014 file2.txt
-rw-rw-r--  0 1000   1000   810000 Jul  5  2014 file3.txt
Archive Format: ZIP 2.0 (deflation),  Compression: none

おすすめ記事