Linux文件的切分和结合
| 1、文件的切分及結(jié)合工具; 可能我們遇到這種情況,有時文件比較大,想上傳到服務(wù)器上,但由于服務(wù)器管理員為了安全考 慮,把上傳空間作了限制,比如只能上傳20M的文件,如果我們文件的體積在100M的,有時就是壓縮也不能滿足服務(wù)器上傳的限制。這時我們就要考慮切分文 件了,把100M的文件,切分成若干份,然后傳到服務(wù)器上。切分后的每個文件都是原文件的組成部份。如果要獲得整個完整的文件,我們就需要文件的結(jié)合工 具。 所以我們引入了文件切分工具split和csplit,文件的結(jié)合工具cat; split 是把一個文件拆分為長度或體積相等的若干文件的工具;
split 是把一個文件拆分為長度或體積相等的若干文件的工具;
split 把輸入的文件拆分為若干體積或長度相等的文件,輸入文件保持不變,只是把結(jié)果拆分結(jié)果寫到outfileaa、outfileab ... ... 等文件中。如果我們不指定outfile,被拆分后的文件會寫到 xaa、xab ... ...。 -b n[bkm] 以體積為單位的拆分,約定每拆分后每個文件的大小 ,b代表512B,k代表1KB,m代表1MB。 -C bytes[bkm] 把bytes的最大值放入文件,堅持增加完整的行; - 從標(biāo)準(zhǔn)輸入讀取; --help 幫助;
實例一:比如我們想切分一個文件linuxdoc.txt,切分后,每兩行存為一個新文件。 [root@localhost ~]# more linuxdoc.txt 注:linuxdoc.txt 文件內(nèi)容查看;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* 注:查看這些文件的內(nèi)容;是不是每個文件都是兩行呢? linuxdocspaa :::::::::::::: 111111111 222222222 :::::::::::::: linuxdocspab :::::::::::::: 333333333 444444444 :::::::::::::: linuxdocspac :::::::::::::: 555555555 666666666 :::::::::::::: linuxdocspad :::::::::::::: 777777777 888888888 :::::::::::::: linuxdocspae :::::::::::::: 999999999 000000000 實例二:以文件體積為單位的切分; [root@localhost ~]# ls -lh linuxdoc.txt-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 如果指定切分體積大小后面沒有接單位,默認(rèn)是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 對于切分體積的說明:如果沒有指定單位,默認(rèn)單位是B。還有其它的單位,比如b、k、m。看下面的例子; [root@localhost ~]# ls -lh moretool.txt-rw-r--r-- 1 root root 13K 04-27 16:17 moretool.txt 注:文件大小為13K; [root@localhost ~]#split -b 3k moretool.txt moretoolwsp 注: 切分后每個文件大小為3K; 實例三:從標(biāo)準(zhǔn)輸入讀取的實例; [root@localhost ~]# ls -lh /etc | split -l 40 - etcfilelist[root@localhost ~]# ls etcfilelista* etcfilelistaa etcfilelistab etcfilelistac etcfilelistad etcfilelistae etcfilelistaf etcfilelistag 注:本指令的意思是用ls以長格式列出/etc目錄的文件(不包括.file格式的文件,也就是隱藏文件),把輸入的內(nèi)容傳遞給split,讓 split來切分每40行為存為一個文件,文件名的開頭以etcfilelist開始。注意40后面的- ,表示從標(biāo)準(zhǔn)輸入讀取,在這里就表示鍵盤輸入了,也就是讀取ls -lh /etc 指令的內(nèi)容。然后split切分。 ??? ??? 2.2 csplit 工具; 正在補充之中... ...
cat 工具如果后面直接文件文件名,就可以查看文件的內(nèi)容。我們在《文件內(nèi)容查看工具》中有說過。在《文件內(nèi)容查看工具》一文中,我們也談過cat 連接文件的功能;現(xiàn)在我們?nèi)缘冒裞at工具連接文件的功能單列出來說一說。
命令格式如下: cat file1 file2 file3 ... ... > filen我們可以把file1、file2、file3 等多個文件合并到一個文件中,其中filen是在合并這些文件的同時新建的文件,而不是已存在的文件; [root@localhost ~]# cat sir01.txt123456 [root@localhost ~]# cat sir02.txt 56789 [root@localhost ~]# cat sir03.txt 09876 [root@localhost ~]# cat sir01.txt sir02.txt sir03.txt > sir04.txt [root@localhost ~]# more sir04.txt 123456 56789 09876
命令格式如下: cat file1 file2 file3 ... ... >> filen如果我們想把file1、file2、file3等多個文件內(nèi)容連接起來,并追加到一個已存在的文件filen中,應(yīng)該用追加的方法; [root@localhost ~]# more sir01.txt123456 [root@localhost ~]# cat sir01.txt 123456 [root@localhost ~]# cat sir02.txt 56789 [root@localhost ~]# cat sir03.txt 09876 [root@localhost ~]# cat sir05.txt aaaaa bbbbb [root@localhost ~]# cat sir01.txt sir02.txt sir03.txt >> sir05.txt [root@localhost ~]# cat sir05.txt aaaaa bbbbb 123456 56789 09876
比如我們把一個大的文件分拆為多個小文件時,肯定會考慮到,我們重新把一個一個小的分拆文件連接起來,會不會能和原文件保持一致 。這樣的疑問其實也是有道理的,因為這關(guān)系到一個文件的完整性,如果真的合并不到一起,關(guān)系到文件的完整性和安全性。這時就涉及到文件的校驗工具。一般我 們是通過MD5工具來校驗對比。在Linux也有這樣的工具md5sum。 [root@localhost ~]# ls -lh myfile.img 注:查看myfile.img文件屬性;-rw-r--r-- 1 root root 7.9M 04-27 20:35 myfile.img [root@localhost ~]# split -b 4m myfile.img myfileSp 注:分拆為大小為4M的文件; [root@localhost ~]# ls -lh myfileSp* 注:列出分拆文件,我們看到有兩個文件; -rw-r--r-- 1 root root 4.0M 04-27 20:37 myfileSpaa -rw-r--r-- 1 root root 3.9M 04-27 20:37 myfileSpab [root@localhost ~]# cat myfileSp* > newmyfile.img 注:我們嘗試合并文件到一個新文件中; [root@localhost ~]# ls -lh newmyfile.img -rw-r--r-- 1 root root 7.9M 04-27 20:38 newmyfile.img [root@localhost ~]# md5sum newmyfile.img myfile.img 注:我們對比合并后文件和原文件的MD5值,如果M55值相同,就是完整的; [root@localhost ~]# md5sum newmyfile.img myfile.img 7eb24d865a14fa3227633816800522c1 myfile.img 7eb24d865a14fa3227633816800522c1 newmyfile.img 上面是一個實例,把myfile.img文件分拆為4M大小的文件,然后再把兩個文件連接起來,然后校驗是不是合并后的文件和原文件的MD5值是相同的,如果相同,證明分拆過程是安全的。 |
總結(jié)
以上是生活随笔為你收集整理的Linux文件的切分和结合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 动态规划 最短路径
- 下一篇: python补全插件