文件分割与合并

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

 

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

 

1、分割文件

1.1、在Linux下

在终端中执行以下命令将文件MyFile分割为若干个文件。分割出的文件名称依次为xaa、xab、xac等。每个分割文件的大小为1000行。split命令从MyFile的文件开始位置以字节为单位读取文件,直到读取到字符0x0a(\n,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

posted @ 2018-12-19 22:44  造冰箱的大熊猫  阅读(1230)  评论(0编辑  收藏  举报