題 在沒有提取的情況下讀取壓縮文件的內容?


如何在不提取包含在其中的.zip的情況下讀取存檔中特定文件的內容?我正在使用Linux命令行。

早一點  詢問有關查看檔案目錄的信息。但對我來說,只查看存檔中的文件列表是不夠的,我需要查看存檔中文件的內容。


121
2017-08-17 10:41


起源


與...重複 superuser.com/questions/216617/zip-linux-view-files-in-archive - pevik
@ fixer1234(和其他人): 相關問題 問:“如何查看ZIP存檔中的文件?”AFAIC,這與“如何查看文件內容......?”的問題相同,很不幸的是很多回答這個問題的人 解釋它 作為“如何查看存檔的目錄?”但是, 吉爾斯的回答 (自然地)和 Rajasekhar Tolety的回答 (顯然)這個問題提供了這個問題的答案。 - Scott
@Scott,也許我們應該弄清楚如何合併這兩個問題,以便將兩個主題都包含在一個中,或者重新聚焦另一個以明確關於目錄,然後在兩個地方之間移動答案以匹配問題。現在,兩者都是雜亂無章。 - fixer1234
@ fixer1234:我同意,達到一定程度。主持人總是告訴我們重複是一件好事,因為它們為搜索引擎提供了更大的曝光錶面(即,搜索更有可能找到其中一個問題)。但有一個問題:如果用戶發現 一 問題和聯繫並不明顯(沒有人查看“鏈接”和“相關”問題的列表 - 至少不是搜索結果的隨機關注者),然後用戶只找到了答案的一小部分。 DavidPostill投了最後一票來重新開啟這個問題;也許你應該跟他說話。 - Scott
@Scott - 鑑於問題提示者標記了“我如何查看存檔的目錄?”答案被接受,我不得不認為這可能是問題的意圖。不幸的是,它含糊不清,這可能意味著任何一種解釋。 - M. Justin


答案:


unzip -l archive.zip 列出ZIP存檔的內容以確保您的文件在裡面。

使用 -c 將命名文件的內容寫入stdout(屏幕)而不必解壓縮整個存檔的選項。

unzip -c archive.zip file1.txt file2.txt | less

對於這種操作,我總是將輸出管道輸出到 less,否則整個文件會在您閱讀之前飛到屏幕上。

BTW zcat非常適合查看.gz文件的內容,而無需先解壓縮它們。


164
2017-08-17 11:10



至少在Ubuntu中,默認情況下,較少以某種方式配置為執行此操作 - 所以 less archive.zip 實際上顯示了文件列表。 - aviv
bzcat用於查看bz2文件的內容而無需先解壓縮它們... - Justin E
unzip -c還顯示文件名和一些額外的消息(將它們發送到stdout)。使用-p只會以二進制格式發送文件。這對管道更有用 - Juan Calero
跟你的 $LESSOPEN 設置為lesspipe,你可以 less foo.gz 查看解壓縮的內容。 (@aviv:這是同樣的事情 less foo.zip 管道 unzip -l foo.zip 進入自己)。 - Peter Cordes
unzip -c archive.zip '*' | less 做我想要的:cat zip zip存檔的內容。 - Peter Cordes


zipinfo 是您可能使用的另一種工具,如果您使用的是鎖定係統,這將非常有用 unzip 不被允許。


4
2017-08-01 14:13





如果您只是想查看 圖片 在檔案館內,你可以使用 齊心文具 或者更新 MComix 看到裡面的圖像 .zip.rar.cbr,和 .cbz 沒有提取的文件。


4
2018-03-24 20:22





開始 Emacs 在命令行中打開您的zip文件 Zip-Archive 模式。 如果沒有任何Emacs / elisp調優(新用戶通常會擔心),您將看到來自的文件詳細信息 zipinfo:模式,長度,日期,時間

然後,您將能夠使用標準快捷方式打開緩衝區中的文件,甚至將更改保存回存檔:

  • 在列表中輸入文件名以將其打開
  • 編輯並保存 Ctrl-x Ctrl-s
  • 殺死緩衝區 Ctrl-k 回到存檔緩衝區繼續

什麼時候進來 Zip-Archive 緩衝,使用 Ctrl-h m 獲取幫助視圖中的所有快捷方式。

希望這可能會讓您發現Emacs非常棒的功能


1
2017-09-10 10:20





如果文件包含在zip存檔中,則需要從存檔中僅提取該文件(可能取決於存檔類型,某些存檔無法單獨提取文件)


-1
2017-08-17 10:46



是的,但你可以提取到stdout並直接進入尋呼機。 - Peter Cordes
這不是技術上的答案,更可能來自政治家或律師。請更具體一點! (以示例命令顯示) - Hola Soy Edu Feliz Navidad