1.命令簡介
unzip 命令用於列出、測試和提取 ZIP 存檔中的壓縮文件。如果 unzip 不跟任何選項(默認行爲),會將指定的 ZIP 存檔文件解壓到當前目錄。
2.命令格式
unzip [-Z] [OPTIONS] [ZIP_FILE...] [FILE...] [-x FILE...] [-d EXDIR]
[ZIP_FILE…] 表示 ZIP 存檔文件,[FILE…] 表示待處理的 ZIP 存檔文件中的文件列表,[-x FILE…] 表示不處理的文件列表,[-d EXDIR] 表示解壓縮後的文件存放的目錄。文件名均可使用通配符表示。
注意,unzip 可以不跟任何選項和參數,單獨執行 unzip 將打印簡要幫助信息。
3.選項說明
長選項的強制參數對於短選項也是強制的。下面主要介紹了通用選項和 Linux 平臺的選項,其它平臺(VMS、MS-DOS、MacOS 等)的專用選項參見 unzip(1) 手冊。
-Z 等於執行 zipinfo(1) 命令,用於查看 zip 文件的整體信息 -c 將解壓縮後的文件內容輸出到標準輸出(屏幕),並對字符做適當的轉換。類似於 -p 選項,但是 -c 會輸出文件名 -f 更新現有的文件,即只提取那些已經存在於磁盤上且比磁盤副本更新的文件 -l 只顯示壓縮文件內所包含的文件不解壓 -p 與 -c 選項類似,以二進制模式解壓文件,不會執行任何的轉換,並將文件內容輸出到標準輸出(屏幕) -t 對文件進行 CRC 校驗檢查壓縮文件是否正確 -u 與 -f 參數類似,但是除了更新現有的文件外,也會將壓縮文件中的其他文件解壓出來 -v 執行時顯示詳細的信息 -z 僅顯示壓縮文件的備註信息 -a 對文本文件進行必要的字符轉換 -b 將所有文件視爲二進制文件,不對文本文件進行字符轉換 -B 對本地即將被覆蓋的文件進行備份 -C 匹配命令行指定的待提取的文件列表時不區分大小寫 -D 不還原提取項的時間戳。正常情況,unzip 會恢復提取項的時間信息(Access Time、Modify Time 和 Change Time) -j 不生成提取項的目錄,即所有提取項均放到同級目錄下 -L 將壓縮文件中的全部文件名改爲小寫 -M 將所有輸出通過 unzip 內部的類似於 more(1) 的瀏覽工具進行瀏覽 -n 永遠不要覆蓋現有文件。如果文件已經存在,則跳過該文件的提取而不提示。默認情況下,unzip 會進行詢問是否提取、覆蓋或重命名 -o 覆蓋現有文件而不提示 -P PASSWORD 使用密碼解密 zip 文件 -q 執行時不顯示任何信息 -s 將文件名中的空白字符轉換爲下劃線 -U 修改或禁用UTF-8處理。當 UNICODE_SUPPORT 可用時,選項 -U 強制 unzip 將 UTF-8 編碼的文件名中的所有非 ASCII 字符轉義爲 #uxxx(對於UCS-2字符,或者對於需要 3 個字節的 UNICODE 碼點轉爲 #Lxxxxxx)。此選項主要用於在懷疑提取 UTF-8 編碼文件名時會失敗而進行的調試行爲 -W 修改通配符 ?(單字符統配符)與 *(多字符通配符) 的匹配行爲,使得 ? 與 * 不能匹配目錄的分隔符 /。如 "*.c" 匹配 "foo.c",但不能匹配 "mydir/foo.c" -X 解壓縮時同時恢復文件原來的 UID/GID -: 允許創建提取項的父目錄 ../,默認情況下爲了安全起見是不允許的。使用該選項應格外小心 -^ 允許在提取的 ZIP 存檔項的名稱中使用控制字符
4.常用示例
首先使用 zip 命令對文件 /etc/passwd 和 /etc/group 進行壓縮生成 test.zip 文件,同時使用 -z 選項爲 zip 文件添加註釋說明。
zip test.zip /etc/passwd /etc/group adding: etc/passwd (deflated 58%) adding: etc/group (deflated 45%) enter new zip file comment (end with .): this is test.zip's comment .
(1)使用 -Z 選項查看 ZIP 歸檔文件 test.zip 的整體信息。
unzip -Z test.zip Archive: test.zip Zip file size: 1321 bytes, number of entries: 2 -rw-r--r-- 3.0 unx 1552 tx defN 19-Jan-04 14:56 etc/passwd -rw-r--r-- 3.0 unx 642 tx defN 19-Jan-04 14:56 etc/group 2 files, 2194 bytes uncompressed, 1005 bytes compressed: 54.2%
(2)將壓縮文件解壓縮至當前目錄。
unzip test.zip
(3)如果當前目錄存在同名的文件,解壓縮時不覆蓋原有文件。
unzip -n test.zip
(4)解壓縮時覆蓋原有文件,不進行詢問。
unzip -o test.zip
(5)將壓縮文件解壓縮至指定目錄。
mkdir dir unzip test.zip -d dir
(6)僅顯示 zip 文件的註釋說明,不解壓。
unzip -z test.zip Archive: test.zip this is test.zip's comment
(7)僅查看 zip 文件中的文件列表,不解壓。
unzip -l test.zip Archive: test.zip this is test.zip's comment Length Date Time Name --------- ---------- ----- ---- 1552 01-04-2019 14:56 etc/passwd 642 01-04-2019 14:56 etc/group --------- ------- 2194 2 files