大文件的切分--split命令选项详解

由于工作中需要处理很大的数据文件,使用split命令将其切分成较小的文件后再进行处理是一个不错的选择。

在默认情况下,split以1000行为单位进行切分,如果不足1000行的会另外输出到一个文件。
输出文件由前缀和后缀组成,默认前缀为"x",默认后缀是从a开始带两个字符,如"aa"、"ab"等,当下一个生成的文件到达最后一个字符时,字符数量会加2,如:'yz', 'zaaa'...通过这种扩展方式,输出的文件数量没有限制。
但要注意:如果通过-a选项指定了后缀的长度,当后缀序列用完后split会报错,已经切分好的文件会保留。

我的split版本是8.22。支持的选项如下:

-l LINES 或者 --lines=LINES

将文件按 LINES 行切分到输出文件中。

 

 

-b SIZE 或者 --bytes=SIZE

将文件按指定的SIZE容量大小来切分到输出文件中
可以使用数值的形式或者单位的形式来表示
'MB' <==> 1000*1000
容量大小的相关含义:KB表示1000字节 K表示1024字节,其他容量单位类似。
切分后的文件中可能会存在不完整的行 到容量的分割点时,某一行可能还没有结束,会导致该行被切割成了两行或多行。

 

但不用担心数据不完整,将顺序相邻的文件合并后(比如使用cat将两个文件内容拼到一起),不完整的行又会合并成一行。

 

-C 或者 --line-bytes=SIZE

跟-b都是按SIZE容量大小来切割,不同的是会以接近设置的最大容量切割,而不是一定是设置的容量。当行的大小不超过设置的容量时,会保证文件中每行内容的完整性,每个文件的容量会近似设置的最大容量。

  

--filter=COMMAND

直接使用split也可以切分压缩文件,但是一般无法指定压缩文件的扩展名。
split -b200G test.xz big-
通过该选项,并结合FILE环境变量可以为每个切分后的压缩文件指定扩展名。
当有大的压缩文件要切分时,可以使用下面的命令
xz -dc BIG.xz | split -b200G --filter='xz > $FILE.xz' - big-
如果是1:10的压缩比,以上命令会将1T的文件切分成50个20G的文件,切分后的文件名类似:'big-aa.xz', 'big-ab.xz'

  

-n CHUNKS 或者 --number=CHUNKS

将文件切分成指定数量的文件,有3种模式:1、一般模式  2、l模式 3、r模式
块数(CHUNKS)的值可以设置为如下的形式:

          N      以当前INPUT的大小切分成N个文件
          K/N    仅将N个文件中的第K个输出到标准输出
          l/N    切分成N个文件,同时保证行不会被切断
          l/K/N  将N个文件中的第K个输出到标准输出,同时保证行不会被切断
          r/N    类似l模式,但使用轮询分配
          r/K/N  类似r/N,但仅将N个文件中的第K个输出到标准输出

(1)、一般模式下,将 INPUT 切分成 N 个块后剩余的字节,会分配给最后一个块。初始计算后input中再加入字节会被丢弃(除非使用r模式)。只要指定了N,即使INPUT少于N行或者INPUT中断,也始终会切分成N个文件。可能存在行被切断的情形。


(2)、在l模式下,块的大小约为INPUT大小/N,INPUT 会被分成 N 个相等大小的部分,最后分配剩余的。行不会被切断,最终的输出文件可能不会正好等于计算的切分大小;如果有的行非常长,有的块最终会是空的。

 

(3)、在r模式下,会将文件行按块数挨个分配给相应的块。INPUT可以是任意大小,可直接用管道。

-a LENGTH 或者 --suffix-length=LENGTH

指定文件后缀名长度
如果LENGTH为0,则跟默认设定一致,长度2,且在必要时会自动将长度加2。

 

-d 或者 --numeric-suffixes[=FROM]

将后缀设置为数字而不是默认的小写字母。
如果指定FROM,则从FROM开始计数,否则从0开始。
需要注意,指定 FROM 值会禁用默认的自动后缀长度扩展,如果后缀值超过了“99”,需要指定“-a”选项。

  

--additional-suffix=SUFFIX

输出文件名后附加一个额外的SUFFIX(后缀)。利用该选项可以生成文件的扩展名。
注意:SUFFIX不能包含斜线。

  

 

-e 或者 --elide-empty-files

当指定--number选项时,如果文件行数比切分后的块数少,或者有非常长的行跨越了一个块都会造成生成空的(0长度)输出文件。指定该选项后,切分时不会生成空文件,且输出文件序列号也还是连续顺序生成的。

 

  

-u 或者 --unbuffered

不使用缓冲,立即将输入复制到输出。在'--number r/...'模式下,不使用缓冲会慢很多。

 

--verbose

切分前输出诊断信息

--version

显示版本信息

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Knife for File 大文件切割/复原器 for Windows 7 或 更高版本 主要特色如下: ------------------------------------------------------------------------------------------------------- 1. 可以精准、快速地切割/复原任何大文件;复原后一个字节也不差。 本款大文件分割软件最大的特色是,对于大小超过4GB的所谓“巨型”文件,也可轻松、快速地分割/复原,只要你可用的存储空间足够。 2. 支持分割的文件格式不拘,纯粹二进制切割。切割进度用 百分比文字 + 进度条显示。 电影文件、MS Virtual Machine(.VHD),抑或任何其他格式的文件,均可精准切割/复原。 3. 纯绿色免费软件,无需安装。 这意味着,你只需将应用程序包解压后得到的整个文件夹,Copy到你的电脑,点击Knife.exe即可执行;无需执行安装动作。 为了方便以后操作,你也可以在Windows桌面,自行建立,Knife.exe 的 shortcut. 4. 简洁易用;而且短小精悍,只有区区100多KB。在 Windows 7 简体中文版上,实际测试通过。 5. 用户界面目前基本上支持中文简体、中文繁体、英文,以及日文, 四种语系。  作为程序员,个人文字翻译能力有限,个别提示信息仍用简单英文。 :-) 6. 这是个人作为一名VC++爱好者,最初根据自己在工作中传输文件的实际需要,而撰写的一个小工具软件。  完全免费拿出来分享,希望对大家工作、生活有所裨益。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值