檔案的切分split和結合工具cat 介紹

來源:互聯網
上載者:User

作者:北南南北
來自:LinuxSir.Org
摘要:檔案的切分工具split和檔案的結合工具cat,是我們偶爾用到的工具。初學的弟兄可能需要瞭解一下,有時我們在系統管理中還是需要的;

目錄

  •  

    •  

        2.11 文法格式;
        2.12 split執行個體應用;
    • 2.1 split 工具;

      2.2 csplit 工具;

      3.1 把多個檔案合并到一個新的檔案中;
      3.2 把多個檔案合并追加到一個已存在的檔案中;
  • 1、檔案的切分及結合工具;
    2、檔案的切分工具 split 和csplit;

    3、檔案的串連工具 cat;

    4、關於分拆檔案和串連檔案的安全性;
    5、關於本文;
    6、後記;
    7、參考文檔;
    8、相關文檔;


++++++++++++++++++++++++++++++++++++++
本文:
++++++++++++++++++++++++++++++++++++++


1、檔案的切分及結合工具;

可能我們遇到這種情況,有時檔案比較大,想上傳到伺服器上,但由於伺服器管理員為了安全考慮,把上傳空間作了限制,比如只能上傳20M的檔案,如果
我們檔案的體積在100M的,有時就是壓縮也不能滿足伺服器上傳的限制。這時我們就要考慮切分檔案了,把100M的檔案,切分成若干份,然後傳到伺服器
上。切分後的每個檔案都是原檔案的組成部份。如果要獲得整個完整的檔案,我們就需要檔案的結合工具。

所以我們引入了檔案切分工具split和csplit,檔案的結合工具cat;


2、檔案的切分工具 split 和csplit;

split 是把一個檔案拆分為長度或體積相等的若干檔案的工具;


2.1 split 工具;

split 是把一個檔案拆分為長度或體積相等的若干檔案的工具;


2.11 文法格式;

split [參數選項]  infile    [outfile]

split 把輸入的檔案拆分為若干體積或長度相等的檔案,輸入檔案保持不變,只是把結果拆分結果寫到outfileaa、outfileab ... ... 等檔案中。如果我們不指定outfile,被拆分後的檔案會寫到 xaa、xab ... ...。
參數

-l n  把infile拆分為具有n行的段,預設值為1000
-b n[bkm] 以體積為單位的拆分,約定每拆分後每個檔案的大小 ,b代表512B,k代表1KB,m代表1MB。
-C bytes[bkm] 把bytes的最大值放入檔案,堅持增加完整的行;
- 從標準輸入讀取;
--help  協助;


2.12 split執行個體應用;

執行個體一:比如我們想切分一個檔案linuxdoc.txt,切分後,每兩行存為一個新檔案。

[root@localhost ~]# more linuxdoc.txt  註: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

執行個體二:以檔案體積為單位的切分;

[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 如果指定切分體積大小後面沒有接單位,預設是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。看下面的例子;

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

執行個體三:從標準輸入讀取的執行個體;

[root@localhost ~]# ls -lh /etc | split -l 40 - etcfilelist
[root@localhost ~]# ls etcfilelista*
etcfilelistaa  etcfilelistab  etcfilelistac  etcfilelistad  etcfilelistae  etcfilelistaf  etcfilelistag

註:本指令的意思是用ls以長格式列出/etc目錄的檔案(不包括.file格式的檔案,也就是隱藏檔案),把輸入的內容傳遞給
split,讓split來切分每40行為存為一個檔案,檔案名稱的開頭以etcfilelist開始。注意40後面的-
,表示從標準輸入讀取,在這裡就表示鍵盤輸入了,也就是讀取ls -lh /etc 指令的內容。然後split切分。


2.2 csplit 工具;

正在補充之中... ...


3、檔案的串連工具 cat;

cat 工具如果後面直接檔案檔案名稱,就可以查看檔案的內容。我們在《檔案內容查看工具》中有說過。在《檔案內容查看工具》一文中,我們也談過cat 串連檔案的功能;現在我們仍得把cat工具串連檔案的功能單列出來說一說。


3.1 把多個檔案合并到一個新的檔案中;

命令格式如下:

cat file1 file2 file3 ... ... > filen

我們可以把file1、file2、file3 等多個檔案合并到一個檔案中,其中filen是在合并這些檔案的同時建立的檔案,而不是已存在的檔案;

[root@localhost ~]# cat sir01.txt
123456
[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


3.2 把多個檔案合并追加到一個已存在的檔案中;

命令格式如下:

cat file1 file2 file3 ... ... >> filen

如果我們想把file1、file2、file3等多個檔案內容串連起來,並追加到一個已存在的檔案filen中,應該用追加的方法;

[root@localhost ~]# more sir01.txt
123456
[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


4、關於分拆檔案和串連檔案的安全性;

比如我們把一個大的檔案分拆為多個小檔案時,肯定會考慮到,我們重新把一個一個小的分拆檔案串連起來,會不會能和原檔案保持一致
。這樣的疑問其實也是有道理的,因為這關係到一個檔案的完整性,如果真的合并不到一起,關係到檔案的完整性和安全性。這時就涉及到檔案的校正工具。一般我
們是通過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值是相同的,如果相同,證明分拆過程是安全的。


5、關於本文;

檔案的切分工具和結合工具只是介紹性的,用法也相對簡單。我們知道有這兩個工具就行了,用的時候查man和help就OK。沒有必要象我這樣大動幹戈寫文檔,弄的好像寫長篇小說似的。如果我真的能當作家,對我來說可是極大的榮耀~~~


6、後記;

關於目錄和檔案管理的文檔寫了有一些了,我想為這些文檔寫個歸類文檔,這樣新手查看就容易一點。另外感覺應該寫一下字元模式下的文本編輯工具的簡單用法,比如vi或nano之類的。這新手面對黑黑的螢幕就不會不知所措了~~~


7、參考文檔;

man 和help ;


8、相關文檔;

  • 由 北南南北 在 2006/04/27 - 21:11 發表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.