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
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