zoukankan      html  css  js  c++  java
  • 文件分割与合并

    造冰箱的大熊猫,本文适用于Linux和Windows@cnblogs 2018/12/19

    用FAT32文件格式的优盘复制文件时,需要注意文件大小不能超过4GB(我曾经有过一次这样的尴尬经历:在计算机A上将一个压缩文件复制到优盘上。在计算机B上打开该文件时,提示压缩包数据错误。以为是下载文件时出现了问题,于是回到计算机A重新下载,重新复制到优盘,但在计算机B上再次打开文件时依然提示压缩包数据错误。一番折腾之后才突然意识到是文件大小与优盘文件格式不匹配。复制文件到优盘上时,操作系统并没有提示文件过大)。为了解决这个问题,有时候会使用压缩工具将文件分割成若干个小文件。这里,介绍另一种相对简单的处理方式:

    1、分割文件

    1.1、在Linux下

    在终端中执行以下命令将文件MyFile分割为若干个文件。分割出的文件名称依次为xaa、xab、xac等。每个分割文件的大小为1000行。split命令从MyFile的文件开始位置以字节为单位读取文件,直到读取到字符0x0a( ,newline,ASCII LF)。然后将读取到的字节作为1行写入分割文件。0x0a之后的字符作为下一行的第一个字节。

    split MyFile
    

    1.2、在Windows下

    不知道!有知道的什么样的Windows操作或命令等同于split命令,请赐教。

    2、合并split分割出的文件

    2.1、在Linux下

    如果是在Linux系统下,在终端中执行以下命令将分割文件xaa、xab、xac合并为文件MergedFile。

    cat xaa xab xac > MergedFile
    

    如果分割文件名按照字母顺序排列的(split命令默认按照字母顺序生成分割文件名),可使用如下命令合并文件。

    cat xa* > MergedFile
    

    2.2、在Windows下

    在命令行中执行以下命令[2]将分割文件xaa、xab、xac合并为文件MergedFile。

    copy /b xaa+xab+xac MergedFile
    

    3、文件校验

    3.1、在Linux下

    为了确保合并后的文件是正确的,可在命令行中执行以下命令计算MyFile(被分割文件)的md5[3]值。

    md5sum MyFile
    

     执行结果一般如下所示,其中“7ee1... ...5bdd”为MyFile的MD5值。

    7ee145c1b86b6af987c3803361cf5bdd MyFile
    

    对合并文件MergedFile进行同样的操作,如果MergedFIle的md5值与MyFile的md5值相同,则合并文件正确。

    md5sum MergedFile
    

    为了省去人工判别MD5值的麻烦,可以按照以下步骤执行。首先执行以下命令计算MyFile的md5值,并将结果保存到checkresult.txt文件中。

    md5sum MyFile >> checkresult.md5
    

    将checkresult.md5复制到存放MergedFile的路径下,将MergedFile改名为MyFile,并在该路径下执行以下命令

    md5sum checkresult.md5
    

    运行结果如下所示,如果校验成功显示OK,失败则显示FAILED。

    MyFile.dat: FAILED/OK

    3.2、在Windows下

    找个Windows下支持md5校验的工具吧,具体不知道。

    2019/2/23补充:有关文件完整性校验可参考这里

    4、split命令的参数使用

    将文件分割为指定大小(1GB)的文件。

    split -b 1GB MyFile
    

    设置分割文件名后缀为“.asf”。

    split --additional-suffix .asf MyFile
    

    设置分割文件名前缀为“mysplit”。

    split MyFile mysplit
    

    设置分割文件以数字标识(分割文件名依次为x00,x01,x02)。

    split -d MyFile
    

     split命令的其它参数详见split命令的网页[1]

    [1] gnu.org: Split File into Pieces

    [2] microsoft.com: Copy Command

    [3] wikipedia: md5

  • 相关阅读:
    C++内存检测函数_CrtSetBreakAlloc()
    Detours 的配置
    浅析杀毒软件开发原理
    Sqlite3初学
    java拦截器、过滤器的区别
    sudo 设置无需密码
    Visual Studio 2012/2010/2008 远程调试
    jquery 随笔
    网页中显示xml,直接显示xml格式的文件
    centos7.2_x64安装mysql.tar.gz
  • 原文地址:https://www.cnblogs.com/pandabang/p/10146677.html
Copyright © 2011-2022 走看看