Command-Line
如何在 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"
但是它很長並且容易出錯(例如這個列表中的文件名存檔將被刪除)
unzip -l 是否有任何其他選項(我檢查了 unzip 手冊頁並沒有找到任何選項)或其他工具可以做到這一點?
對我來說重要的是不要真正解壓縮檔案,而只是看看裡面有什麼文件。
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
’sbsdtar
:$ 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