私の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ページを確認したところ、何も見つかりませんでした)や他のツールを使用した他のオプションはありますか?
アーカイブを実際に解凍するのではなく、内部のファイルを確認することが重要です。
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