zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    linux tcpdump(转)
    linux ping
    Dalvik VM和JVM 的比较
    Android应用开发基础之八:广播与服务(二)
    Android应用开发基础之七:广播与服务(一)
    Android应用开发基础之五:网络编程(二)
    Android应用开发基础之三:数据存储和界面展现(三)
    Android应用开发基础之二:数据存储和界面展现(二)
    Android应用开发基础之一:数据存储和界面展现(一)
    Android之Fragment 基本介绍(转)
  • 原文地址:https://www.cnblogs.com/0xcafedaddy/p/9778012.html
Copyright © 2011-2022 走看看