约 5543 字

约 28 分钟

#Bash 的 split 命令

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

功能

将文件拆分为多个文件。

类型

可执行文件(/usr/bin/split),属于 coreutils。

参数

  • OPTION 选项:
    • -a, --suffix-length=N - 输出文件名后缀长度设为 N;默认为 2
    • --additional-suffix=SUFFIX - 输出文件名额外添加后缀 SUFFIX
    • -b, --bytes=SIZE - 每个输出文件的大小为 SIZE 字节
    • -C, --line-bytes=SIZE - 每个输出文件的大小不超过 SIZE 字节,保持行的完整性
    • -d - 输出文件名后缀使用从 0 开始的数值;默认为 aa ab 格式
    • --numeric-suffixes[=FROM] - 输出文件名后缀使用从 FROM 开始的数值
    • -x - 输出文件名后缀使用从 0 开始的十六进行数值
    • --hex-suffixes[=FROM] - 输出文件名后缀使用从 FROM 开始的十六进行数值
    • -e, --elide-empty-files - 使用 -n 选项时,不生成空文件
    • --filter=COMMAND - 将输出写入 COMMAND 命令处理,并设置 $FILE 为文件名
    • -l, --lines=NUMBER - 每个输出文件有 NUMBER 行;默认为 1000 行
    • -n, --number=CHUNKS - 基于 CHUNK 生成文件:
      • N - 平均拆分成 N 个文件
      • K/N - 平均拆分成 N 份,将第 K 份打印到标准输出
      • l/N - 平均拆分成 N 个文件,保持行的完整性
      • l/K/N - 平均拆分成 N 份,将第 K 份打印到标准输出,保持行的完整性
      • r/N - 类似 l/N 但是使用循环分配
      • r/K/N - 类似 l/K/N 但是使用循环分配
    • -t, --separator=SEP - 使用 SEP 而不是换行符(\n)作为行的分隔符
    • -u, --unbuffered - 输出时不使用缓冲
    • --verbose - 在打开每个输出文件前打印诊断信息
    • --help - 显示帮助
    • --version - 显示版本
  • FILE - 文件列表;如果没有这个参数或指定为 -,则读取标准输入
  • PREFIX - 输出文件名前缀;默认为 x

#示例

字母后缀

$ split 1.txt                   # 将文件 1.txt 拆分,每个文件 1000 行
$ ls
1.txt xaa
$ split -n 3 1.txt              # 将文件 1.txt 拆分为 3 个文件
$ ls
1.txt xaa  xab  xac
$ split -n 3 1.txt my_file_     # 输出文件名前缀为 my_file_
$ ls
1.txt xaa  xab  xac  my_file_aa  my_file_ab  my_file_ac

数值后缀

$ split -n 3 -d 1.txt my_file_             # 前缀为 my_file_,使用从 0 开始的数值后缀
$ ls
1.txt my_file_00  my_file_01  my_file_02
$ split -n 3 --numeric-suffixes=10 1.txt   # 前缀为 my_file_,使用从 10 开始的数值后缀
$ ls
1.txt my_file_00  my_file_01  my_file_02  my_file_10  my_file_11  my_file_12

#推荐阅读

#手册

更新: 2026/1/18

作者: PlanC

创建: 2025/12/4