split 將大檔案切割為多個小檔案,便於傳輸、儲存、並行處理。對應合併用 cat。本文詳細說明參數、單位、命名規則與實戰範例。
split [選項] [輸入檔] [輸出前綴]
# 輸出檔名 = 前綴 + 後綴 (預設 aa, ab, ac ... xaa, xab ...)
| 參數 | 功能 | 範例 |
|---|---|---|
-l N / -N | 每 N 行切一檔 (預設 1000 行) | split -l 5000 big.log chunk_ |
-b SIZE | 每 SIZE 位元組切一檔,支援 K/M/G | split -b 100M big.iso part_ |
-C SIZE | 類似 -b,但盡量保持行完整 (不斷行) | split -C 50M big.csv part_ |
-d | 數字後綴 (00, 01, 02...) 替代字母 | split -d -b 10M file part_ |
-a N | 後綴長度 (預設 2) | split -a 3 -b 1M f p_ → p_000, p_001 |
--verbose | 顯示每個輸出檔名 | |
--filter=CMD | 輸出管線導向指令 (如壓縮、上傳) | split -b 100M --filter='gzip > $FILE.gz' big.iso |
split -b 2G -d ubuntu-22.04.iso ubuntu-22.04.iso.part
# 產生 ubuntu-22.04.iso.part00, part01 ...
split -l 100000 -d access.log access.log.part
split -b 100M --filter='gzip > $FILE.gz' huge.sql dump_
# 產生 dump_00.gz, dump_01.gz ...
# 合併分割檔 (順序正確即可)
cat ubuntu-22.04.iso.part* > ubuntu-22.04.iso
# 或
cat part00 part01 part02 > original.file
# 驗證完整性
md5sum original.iso ubuntu-22.04.iso
# 兩者 checksum 一致即成功
# 分割後並行壓縮/上傳
split -b 50M -d bigfile part_
ls part_* | xargs -P 4 -I{} gzip {} # 4 核心並行壓縮
ls part_*.gz | xargs -P 4 -I{} scp {} user@host:/dst/
split 不修改原檔,僅讀取。-C 保持行完整,避免 JSON/CSV 斷行導致解析錯誤。split -b/-l/-C 靈活切割,cat 無損合併,--filter 串聯壓縮/上傳,構成大檔案處理鐵三角。掌握單位 (K/M/G)、後綴控制 (-d -a)、驗證校驗和,即可應對備份、傳輸、日誌輪轉等場景。