檔案拆分命令 split 使用簡介

Ceelog發表於2019-01-25

檔案拆分命令 split 使用簡介

背景

很多時候,我們需要將一個大檔案拆分成 N 個小檔案,以方便併發或批量處理

命令

在 Linux 系統下就有這樣一個工具:

split [選項]... [輸入 [字首]]複製程式碼

通常,[輸入] 是一個指定路徑的檔案,[字首] 用來標示拆分後的小檔案

[選項] 則主要包括:

-a, --suffix-length=N    指定字尾長度為N (預設為2)
-b, --bytes=大小        指定每個輸出檔案的位元組大小
-C, --line-bytes=大小    指定每個輸出檔案裡最大行位元組大小
-d, --numeric-suffixes     使用數字字尾代替字母后綴
-l, --lines=數值        指定每個輸出檔案有多少行
--verbose        在每個輸出檔案開啟前輸出檔案特徵
--help        顯示此幫助資訊並退出
--version        顯示版本資訊並退出複製程式碼

選項

對於檔案 file.log,執行拆分命令:

split file.log複製程式碼

會在當前目錄下生成以 x 為字首,2位長度的字母為字尾命名的小檔案

而且,每個小檔案的行數為 1000,示例:

-rw-r--r-- 1 root root     33000 428 14:51 xaa
-rw-r--r-- 1 root root     33000 428 14:51 xab
-rw-r--r-- 1 root root     33000 428 14:51 xac
-rw-r--r-- 1 root root     33000 428 14:51 xad
-rw-r--r-- 1 root root     33000 428 14:51 xae
-rw-r--r-- 1 root root     33000 428 14:51 xaf複製程式碼

可以通過選項指定這些引數:

  • 指定字首為 prefix_
split file.log prefix_複製程式碼
-rw-r--r-- 1 root root     33000 428 14:59 prefix_aa
-rw-r--r-- 1 root root     33000 428 14:59 prefix_ab
-rw-r--r-- 1 root root     33000 428 14:59 prefix_ac
-rw-r--r-- 1 root root     33000 428 14:59 prefix_ad
-rw-r--r-- 1 root root     33000 428 14:59 prefix_ae
-rw-r--r-- 1 root root     33000 428 14:59 prefix_af複製程式碼
  • 指定字尾型別和長度

字尾型別預設為字母,還可以是數字,長度預設為2

這樣的話,對於字母型別小檔案最大可用的字尾個數為:

aa ab ac ad ... zz 總共有:26*26=676複製程式碼

對於數字型別小檔案最大可用字尾個數為:

00 01 02 03 ... 99 總共有 10*10=100複製程式碼

因此,在拆分大檔案之前一定要評估好小檔案的數量級,據此來選擇字尾的型別和長度,否則,超出可用字尾範圍的資料將丟失

示例:指定字尾型別為數字,長度為 3

split -d -a 3 file.log prefix_複製程式碼
-rw-r--r-- 1 root root        66 428 15:08 prefix_000
-rw-r--r-- 1 root root        66 428 15:08 prefix_001
-rw-r--r-- 1 root root        66 428 15:08 prefix_002
-rw-r--r-- 1 root root        66 428 15:08 prefix_003
-rw-r--r-- 1 root root        66 428 15:08 prefix_004
-rw-r--r-- 1 root root        66 428 15:08 prefix_005
-rw-r--r-- 1 root root        66 428 15:08 prefix_006複製程式碼
  • 指定小檔案大小
  1. 按照行數拆分,示例:每個小檔案最大 10000 行
    split -l 10000 file.log複製程式碼
  2. 按照位元組數拆分,示例:每個小檔案最大 4M
    split -b 4M file.log複製程式碼

總結

以上,便是檔案拆分命令 split 的使用簡介

需要注意的就是,字尾型別和長度的設定,否則會丟失子檔案


還有疑問? 聯絡作者微博/微信 @Ceelog

相關文章