split

split用来将大文件分割成小文件。有时文件越来越大,传送这些文件时,首先将其分割可能更容易。使用vi或其他工具诸如sort时,如果文件对于工作缓冲区太大,也会存在一些问题。
因此有时没有选择余地,必须将文件分割成小的碎片。
split命令一般格式:
split -output_file-size input-filename output-filename
    这里output-file-size指的是文本文件被分割的行数。split查看文件时,output-file-size选项指定将文件按每个最多1000行分割。如果有个文件有2800,那么将分割成3个文件,分别有1000、1000、800行。每个文件格式为x[aa]到x[zz],x为文件名首字母,[aa]、[zz]为文件名剩余部分顺序字符组合,下面的例子解释这一点。
假定文件bigone.txt有2800行,split命令产生下列文件:
$split bigone.txt
xaa
xab
xac

文件大小为:
Size   Filename
1000   xaa
1000   xab
800    xac

可以使用output-file-size选项来分割文件。以下为一个6行文件。
$ pg split1
this is line1
this is line2
this is line3
this is line4
this is line5
this is line6

按每个文件2行分割,命令为:
$ split -2 split1
观察其结果。
$ ls -lt|head
total 205
-rw-r--r--   1 atiidts  staff   28 May 07 14:34 xaa
-rw-r--r--   1 atiidts  staff   28 May 07 14:34 xab
-rw-r--r--   1 atiidts  staff   28 May 07 14:34 xac

文件有6行,split按每个文件两行进行了分割,并按字母顺序命名文件。为进一步确信操作成功,观察一个新文件内容:
$ pg xac
this is line5
this is line6

 

命令名称:split

使用权限:所有使用者

使用方式:split [OPTION] [INPUT [PREFIX]]

说明:

将一个档案分割成数个。而从 INPUT 分割输出成固定大小的档案,其档名依序为 PREFIXaa, PREFIXab...;PREFIX 预设值为 `x'。若没有 INPUT 档或为 `-',则从标准输入读进资料。

选项:

-b, --bytes=SIZE

SIZE 值为每一输出档案的大小,单位为 byte。
-C, --line-bytes=SIZE

每一输出档中,单行的最大 byte 数。
-l, --lines=NUMBER

NUMBER 值为每一输出档的列数大小。
-NUMBER

与 -l NUMBER 相同。
--verbose

于每个输出档被开启前,列印出侦错资讯到标准错误输出。
--help

命令名称:split

使用权限:所有使用者

使用方式:split [OPTION] [INPUT [PREFIX]]

说明:

将一个档案分割成数个。而从 INPUT 分割输出成固定大小的档案,其档名依序为 PREFIXaa, PREFIXab...;PREFIX 预设值为 `x'。若没有 INPUT 档或为 `-',则从标准输入读进资料。

选项:

-b, --bytes=SIZE

SIZE 值为每一输出档案的大小,单位为 byte。
-C, --line-bytes=SIZE

每一输出档中,单行的最大 byte 数。
-l, --lines=NUMBER

NUMBER 值为每一输出档的列数大小。
-NUMBER

与 -l NUMBER 相同。
--verbose

于每个输出档被开启前,列印出侦错资讯到标准错误输出。
--help

 

 

我想给一个朋友传一个大视频,有几百M,尝试多种传输办法失败后,最后想到的是把视频切开一片片“邮递”过去给他,让它自己组装起来吧。

[root@pps public_rw]# ls -lh RevolutionOS.rmvb
-rwx------ 1 hoho hoho 276M 2005-09-09 RevolutionOS.rmvb

将将这个276M文件分割成20M的小文件,文件分割操作如下:

用法:split [选项] [输入 [前缀]]

[root@pps public_rw]# split -b 20m RevolutionOS.rmvb RevOS_part_
[root@pps public_rw]# ls -lh
总计 552M
-rwx------ 1 hoho hoho 276M 2005-09-09 RevolutionOS.rmvb
-rw-r--r-- 1 root root 20M 03-19 17:59 RevOS_part_aa
-rw-r--r-- 1 root root 20M 03-19 17:59 RevOS_part_ab
...
-rw-r--r-- 1 root root 20M 03-19 18:00 RevOS_part_am
-rw-r--r-- 1 root root 16M 03-19 18:00 RevOS_part_an

“-b 20m”指定分割文件的大小为20M,文件后面的“RevOS_part_”是分割文件的前缀,最后的是16M的“剩余”文件。

组装文件:


[root@pps public_rw] cat RevOS_part_* > RevolutionOS_RSB.rmvb

这里不怕组装顺序错误,因为分割的时候是按字母顺序排下来的,cat也是按照字母顺序处理的,如果不放心,将组装后的文件哈希对比一下:

[root@pps public_rw]# md5sum RevolutionOS.rmvb
ac7cce07f621b1ed6f692e6df0ac8c16 RevolutionOS.rmvb

[root@pps public_rw]# md5sum RevolutionOS_RSB.rmvb
ac7cce07f621b1ed6f692e6df0ac8c16 RevolutionOS_RSB.rmvb

放心了吧:)

如果要分割的是一个文本文件,比如有好几千行,当然每行的字符数是不等的,想要以行数为分割,比如每100行生成1个文件,只需要 -l 参数,如下:

[root@pps public_rw]# split -l 100 test.txt

其实,如果不加任何参数,默认情况下是以1000行大小来分割的。

你可能感兴趣的:(split)