可能我們遇到這種情況,有時文件比較大,想上傳到服務器上,但由于服務器管理員為了安全考慮,把上傳空間作了限制,比如只能上傳20M的文件,如果我們文件的體積在100M的,有時就是壓縮也不能滿足服務器上傳的限制。這時我們就要考慮切分文件了,把100M的文件,切分成若干份,然后傳到服務器上。切分后的每個文件都是原文件的組成部份。如果要獲得整個完整的文件,我們就需要文件的結合工具。
所以我們引入了文件切分工具split和csplit,文件的結合工具cat;
2、文件的切分工具 split 和csplit;
split 是把一個文件拆分為長度或體積相等的若干文件的工具;
2.1 split 工具;
split 是把一個文件拆分為長度或體積相等的若干文件的工具;
2.11 語法格式;
split 把輸入的文件拆分為若干體積或長度相等的文件,輸入文件保持不變,只是把結果拆分結果寫到outfileaa、outfileab ... ... 等文件中。如果我們不指定outfile,被拆分后的文件會寫到 xaa、xab ... ...。
參數
-b n[bkm] 以體積為單位的拆分,約定每拆分后每個文件的大小 ,b代表512B,k代表1KB,m代表1MB。
-C bytes[bkm] 把bytes的最大值放入文件,堅持增加完整的行;
- 從標準輸入讀取;
--help 幫助;
2.12 split實例應用;
實例一:比如我們想切分一個文件linuxdoc.txt,切分后,每兩行存為一個新文件。
111111111
222222222
333333333
444444444
555555555
666666666
777777777
888888888
999999999
000000000
[root@localhost ~]# split -l 2 linuxdoc.txt linuxdocsp 注:切分linuxdoc.txt文件,被切分后的文件名linuxdocsp開頭
[root@localhost ~]# ls linuxdocspa* 注:查看切分后的所有文件;
linuxdocspaa linuxdocspab linuxdocspac linuxdocspad linuxdocspae
[root@localhost ~]# more linuxdocspa* 注:查看這些文件的內容;是不是每個文件都是兩行呢?
linuxdocspaa
::::::::::::::
111111111
222222222
::::::::::::::
linuxdocspab
::::::::::::::
333333333
444444444
::::::::::::::
linuxdocspac
::::::::::::::
555555555
666666666
::::::::::::::
linuxdocspad
::::::::::::::
777777777
888888888
::::::::::::::
linuxdocspae
::::::::::::::
999999999
000000000
實例二:以文件體積為單位的切分;
-rw-r--r-- 1 root root 100 04-27 15:56 linuxdoc.txt
[root@localhost ~]# more linuxdoc.txt
111111111
222222222
333333333
444444444
555555555
666666666
777777777
888888888
999999999
000000000
[root@localhost ~]# split -b 30 linuxdoc.txt linuxdocwsp 如果指定切分體積大小后面沒有接單位,默認是B;
[root@localhost ~]# ls -lh linuxdocwspa*
-rw-r--r-- 1 root root 30 04-27 16:10 linuxdocwspaa
-rw-r--r-- 1 root root 30 04-27 16:10 linuxdocwspab
-rw-r--r-- 1 root root 30 04-27 16:10 linuxdocwspac
-rw-r--r-- 1 root root 10 04-27 16:10 linuxdocwspad
[root@localhost ~]# more linuxdocwspa*
::::::::::::::
linuxdocwspaa
::::::::::::::
111111111
222222222
333333333
::::::::::::::
linuxdocwspab
::::::::::::::
444444444
555555555
666666666
::::::::::::::
linuxdocwspac
::::::::::::::
777777777
888888888
999999999
::::::::::::::
linuxdocwspad
::::::::::::::
000000000
對于切分體積的說明:如果沒有指定單位,默認單位是B。還有其它的單位,比如b、k、m。看下面的例子;
-rw-r--r-- 1 root root 13K 04-27 16:17 moretool.txt 注:文件大小為13K;
[root@localhost ~]#split -b 3k moretool.txt moretoolwsp 注: 切分后每個文件大小為3K;
實例三:從標準輸入讀取的實例;
[root@localhost ~]# ls etcfilelista*
etcfilelistaa etcfilelistab etcfilelistac etcfilelistad etcfilelistae etcfilelistaf etcfilelistag
注:本指令的意思是用ls以長格式列出/etc目錄的文件(不包括.file格式的文件,也就是隱藏文件),把輸入的內容傳遞給split,讓split來切分每40行為存為一個文件,文件名的開頭以etcfilelist開始。注意40后面的- ,表示從標準輸入讀取,在這里就表示鍵盤輸入了,也就是讀取ls -lh /etc 指令的內容。然后split切分。