私の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