web-dev-qa-db-ja.com

コマンドラインに追加情報なしで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(unzipのmanページを確認したところ、何も見つかりませんでした)や他のツールを使用した他のオプションはありますか?

アーカイブを実際に解凍するのではなく、内部のファイルを確認することが重要です。

39
рüффп
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

または、libarchivebsdtarを使用することもできます。

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