zip/unzip 是 Linux 處理 .zip 格式最常用工具,支援跨平台交換。本文整理建立壓縮檔、解壓、更新、刪除內部檔案等實戰指令。
# 遞歸壓縮整個目錄
zip -r archive.zip /path/to/dir
# 排除特定檔案/目錄
zip -r archive.zip /path/to/dir -x "*.log" "*/temp/*"
# 指定壓縮等級 1-9(預設 6)
zip -9 -r archive.zip /path/to/dir # 最大壓縮
zip -0 -r archive.zip /path/to/dir # 僅存儲不壓縮
# 解壓到當前目錄
unzip archive.zip
# 解壓到指定目錄(-d)
unzip -d /target/path archive.zip
# 覆蓋不提示(-o)
unzip -o archive.zip
# 僅列表不解壓(-l)
unzip -l archive.zip
# 測試壓縮檔完整性(-t)
unzip -t archive.zip
# 向現有壓縮檔新增/更新檔案
zip -u archive.zip newfile.txt # 更新或新增
zip -g archive.zip newfile.txt # 僅新增(不更新現有)
# 從壓縮檔刪除檔案
zip -d archive.zip "oldfile.txt"
# 重新命名壓縮檔內檔案
zip -r archive.zip --rename "old.txt" "new.txt" # 需較新版 zip
# 修正壓縮檔註解
zip -z archive.zip
# 進入互動模式輸入註解,Ctrl+D 結束
| 選項 | 說明 |
|---|---|
| -P password | 設定解壓密碼(不安全,明文顯示) |
| -e | 加密壓縮檔(提示輸入密碼,較安全) |
| -q | 安靜模式,不顯示進度 |
| -v | 詳細模式 |
| -j | 捨棄目錄結構,所有檔案平鋪存入 |
| -x pattern | 排除匹配模式 |
| -i pattern | 僅包含匹配模式 |
unzip -O CP936 指定編碼解壓。7z a archive.7z /path/to/dir # 壓縮率更高
7z x archive.7z # 解壓
# 支援更多格式:zip, tar, gz, bz2, xz, rar, iso...