コマンドラインで追加情報なしで 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 には他のオプションはありますか (unzip のマニュアル ページを確認しましたが見つかりませんでした)、または別のツールはありますか?

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

答え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

関連情報