如何在命令列中列出 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's 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

相關內容