LInux 分割合並文件


有兩種方式,

第一種使用dd命令

第二種使用split

 

dd命令是linux下一個非常有用的磁盤命令。它可以將指定大小的塊拷貝成一個文件,並在拷貝的同時執行指定的轉換。
UNIX已經提供了文件切割功能,能完成這個功能的UNIX命令就是DD。 
要切割的大文件為DGJD,共98336321字節,則: 
dd if=dgjd of=zz1 bs=1 count=20000000 
dd if=dgjd of=zz2 bs=1 count=20000000 skip=20000000 
dd if=dgjd of=zz3 bs=1 count=20000000 skip=40000000 
dd if=dgjd of=zz4 bs=1 count=20000000 skip=60000000 
dd if=dgjd of=zz5 bs=1 count=18336321 skip=80000000 

其中IF(INPUT FILENAME)是要切割的大文件名,OF(OUTPUT FILENAME)是切割后的子文件名,BS是指明以多少字節作為一個切割記錄單位,COUNT是要切割的單位記錄數,SKIP是說明切割時的起點,單位同樣以BS設定值為准。通過上述五條指令就將DGJD大文件切割成為4個2千萬字節、1個18336321字節的子文件。要注意的是SKIP的值不能錯。 由此 
也不難看出,DD切割是“非損耗”式的切割,並且支持從任意位置開始的任意大小的切割。 

要將生成的ZZ1、ZZ2、ZZ3、ZZ4四個子文件組裝為XDGJD,則: 
dd if=zz1 of=xdgjd bs=1 count=20000000 
dd if=zz2 of=xdgjd bs=1 count=20000000 seek=20000000 
dd if=zz3 of=xdgjd bs=1 count=20000000 seek=40000000 
dd if=zz4 of=xdgjd bs=1 count=20000000 seek=60000000 
dd if=zz5 of=xdgjd bs=1 count=18336321 seek=80000000 

其中SKIP參數改為SEEK參數,指明組裝的新大文件XDGJD每次的開始位置是從文件頭開始多少字節。如果缺省,則組裝從文件頭開始,顯然這不是我們每次都希望的, 所以需用SEEK參數明確指出開始位置。通過以上5個指令,即可將5個子文件重新組裝為一個大文件。將切割后生成的子文件重新用FTP傳送,結果有的能夠順利傳送, 有的仍然導致網絡癱瘓,不怕,繼續切割,切成每個一千萬字節,再傳,OK!成功傳送! 

 

 

 

一、關於

    在linux下,切割和合並文件可以使用split和cat命令來實現。

 

二、文件切割
        文件切割模式分為兩種:文本文件和二進制模式。
    1、文本模式
            文本模式只適用於文本文件,用這種模式切割后的每個文件都是可讀的。文本模式又分為兩種:按最大文件大小切割和按文本行數切割。
        1)按文件大小切割

                split -C 50k log.log splog

            將文本文件log.log按每塊最大50k的大小進行切割,不打碎行。輸出文件名類似splogaa, splogab…… 
        2)按文本行數切割

                split -l 100 log.log splog

            每個分塊100行,不考慮大小。日志分析時應該有用。
    2、二進制模式

                split -b 50k log.log splog

        每個分塊(當然,最后一個不保證)大小都是50k,基本不可讀。任何類型文件都可以用這種切割模式。

三、文件合並
    不管用什么方式切割,合並方法不變。

        cat splog* >newLog.log


四、補充說明
    split 參數:
        -a:指定輸出文件名的后綴長度,默認為2個(aa,ab...)

        -d:指定輸出文件名的后綴用數字代替

        -b:指定輸出文件的最大字節數,如1k,1m...
        -C:指定每一個輸出文件中單行的最大字節數
        -l:指定每一個輸出文件的最大行數

 

從0開始,以ss為前綴,每個分割大小1kb 

split -b 1k  -d  a.log ss

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM