7-Zip Command Line

最近因為玩 SQL 的原因,常常接觸到壓縮文件,發現 Mac 自帶的 7z 真的是非常強大,總結一下它的使用技巧。

簡單介紹

承襲我一貫的信仰,7z 也是開源的,並且讓我喜歡的一點是,7z 擁有極高的壓縮比,往往可以把一個很大的文件壓縮到很小。

命令行界面

不清楚 7z 是否有圖形界面,但我覺得命令行界面已經足夠了,畢竟我是個能用鍵盤就絕不用滑鼠的人。當然主要還是懶。

通過 7z 命令直接就可以呼出幫助文檔,參數眾多,可見功能強大。

支持格式

壓縮/解壓縮支持:7z, XZ, BZIP2, GZIP, TAR, ZIP, WIM
僅解壓縮:ARJ, CAB, CHM, CPIO, CramFS, DEB, DMG, FAT, HFS, ISO, LZH, LZMA, MBR, MSI, NSIS, NTFS, RAR, RPM, SquashFS, UDF, VHD, WIM, XAR, Z

加密算法

7z 在壓縮時可以指定密碼,密碼使用 AES-256 算法加密。

壓縮

$ 7z a test.7z test.txt -p123     // add test.txt into test.7z

參數

  • a:添加文件
  • -p:指定密鑰

解壓縮

$ 7z e test.7z 
$ 7z x test.7z -o~/test

參數

  • e:釋放文件
  • x:釋放文件(保留全路徑)
  • -o:釋放路徑

其他常用命令

7z 能做的不僅僅是壓縮和解壓縮而已。

列出壓縮文件內容

$ 7z l test.7z

刪除文件

$ 7z d test.7z test.txt

即從 test.7z 中刪除 test.txt 文件。
如需刪除文件夾可以加上 -r 遞歸參數。

測試完整性

$ 7z t test.7z test.txt

檢測 test.7z 中是否包含 test.txt。
同時也支持 -r 遞歸參數。

附錄:7z 幫助文檔參考

Usage

7z [...] [...] [<@listfiles...>]

Commands

a : Add files to archive 添加文件
b : Benchmark d : Delete files from archive 刪除文件
e : Extract files from archive (without using directory names) 釋放文件(不保留路徑)
h : Calculate hash values for files 計算文件 Hash 值
i : Show information about supported formats 輸出支持格式的詳細信息 l : List contents of archive 列出文件內容
rn : Rename files in archive 移除文件
t : Test integrity of archive 檢查完整性
u : Update files to archive 更新文件
x : eXtract files with full paths 釋放文件(保留路徑)

Switches

-- : Stop switches parsing
-ai[r[-|0]]{@listfile|!wildcard} : Include archives 包含文件
-ax[r[-|0]]{@listfile|!wildcard} : eXclude archives 釋放文件
-ao{a|s|t|u} : set Overwrite mode
-an : disable archive_name field
-bb[0-3] : set output log level
-bd : disable progress indicator
-bs{o|e|p}{0|1|2} : set output stream for output/error/progress line
-bt : show execution time statistics
-i[r[-|0]]{@listfile|!wildcard} : Include filenames
-m{Parameters} : set compression Method
-mmt[N] : set number of CPU threads
-o{Directory} : set Output directory 設定輸出路徑
-p{Password} : set Password 設置密鑰
-r[-|0] : Recurse subdirectories
-sa{a|e|s} : set Archive name mode
-scc{UTF-8|WIN|DOS} : set charset for for console input/output
-scs{UTF-8|UTF-16LE|UTF-16BE|WIN|DOS|{id}} : set charset for list files
-scrc[CRC32|CRC64|SHA1|SHA256|*] : set hash function for x, e, h commands
-sdel : delete files after compression
-seml[.] : send archive by email 郵件發送壓縮文件
-sfx[{name}] : Create SFX archive 創建 SFX 文件
-si[{name}] : read data from stdin
-slp : set Large Pages mode
-slt : show technical information for l (List) command
-snh : store hard links as links
-snl : store symbolic links as links
-sni : store NT security information
-sns[-] : store NTFS alternate streams
-so : write data to stdout
-spd : disable wildcard matching for file names
-spe : eliminate duplication of root folder for extract command
-spf : use fully qualified file paths
-ssc[-] : set sensitive case mode
-ssw : compress shared files
-stl : set archive timestamp from the most recently modified file
-stm{HexMask} : set CPU thread affinity mask (hexadecimal number)
-stx{Type} : exclude archive type
-t{Type} : Set type of archive 設置壓縮文件類型
-u[-][p#][q#][r#][x#][y#][z#][!newArchiveName] : Update options 更新文件選項
-v{Size}[b|k|m|g] : Create volumes 創建卷
-w[{path}] : assign Work directory. Empty path means a temporary directory 指定工作目錄,空路徑即為臨時目錄
-x[r[-|0]]]{@listfile|!wildcard} : eXclude filenames 釋放文件名稱
-y : assume Yes on all queries 所有詢問都設置回答 yes

results matching ""

    No results matching ""