Skip to content

split

split命令用于将文件拆分为多个文件。

Bash
split [OPTION] ... [FILE] [PREFIX]

将 FILE 分片输出为 PREFIXaa、PREFIXab ... PREFIXaz,默认按照 1000 行拆分,默认 PREFIX 是 x。其中可用的 OPTION 是:

  • -a/--sufix-length=2: 指定后缀长度,默认 2
  • --additional-suffix=SUFFIX: 将额外的 SUFFIX 附加到文件名后
  • -b/--bytes=SIZE: 指定每个分片的字节 SIZE,可以是 K M G 结尾表示单位
  • -d/--numeric-suffixes=0: 后缀以数字开始而不是 aa 这样的字母
  • -l/--lines=1000: 设置每个分片文件的行数,默认 1000 行
  • -n/--number=CHUNKS: 指定要输出的文件数量
  • -t/--separator=SEP: 使用 SEP 代替换行符作为拆分分隔符,例如 \0 表示 NUL 字符

拆分二进制文件

对于二进制文件的拆分主要使用 -b 来实现:

Bash
split -b 500M largefile.gz part_

# 最终生成 part_aa part_ab ....

如果想要实现拆分为 5 个文件,其中每个文件大致相等:

Bash
split -n 5 -d largefile.gz part_

# 最终生成 part_00 part_01 part_02 part_03 part_04
# 他们大致相等,如果不能被 5 整除最后一个文件会小一些

拆分文本文件

对文本文件的拆分通常是通过换行符来实现的,可以通过 -t 来改变这一点但这个通常很复杂。最多的还是通过 -l 来指定要拆分的行数:

Bash
split -l 50 myfile.txt segment_

合并拆分后的文件

要想将这些文件合并可以使用 cat 命令来完成:

Bash
cat part_* > combined.gz