LInux 分割合併文件

有兩種方式,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切割是「非損耗」式的切割,而且支持從任意位置開始的任意大小的切割。 

要將生成的ZZ一、ZZ二、ZZ三、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!成功傳送! ip

 

 

 

1、關於it

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

 

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

                split -C 50k log.log splog方法

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

                split -l 100 log.log splogco

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

                split -b 50k log.log splog

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

3、文件合併
    無論用什麼方式切割,合併方法不變。

        cat splog* >newLog.log


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

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

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

 

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

split -b 1k  -d  a.log ss

相關文章
相關標籤/搜索