在日常的 Linux 文件处理工作中,split
命令是一款非常实用且高效的工具,尤其适用于将大型文件拆分成多个小文件,方便传输、备份或并行处理。本文将详细解读 split
命令的各项参数,帮助你快速上手并灵活运用。
Linux 文件拆分:什么是 split
?
split
用于将一个文件按行数或字节大小拆分成多个小文件,默认以 1000 行一块拆分,拆分后的文件名格式为 x??
(如 xaa、xab 等)。当不指定文件时,split
会读取标准输入,方便和其他命令管道组合使用。
split 基本语法
split [OPTION]... [FILE [PREFIX]]
FILE
:待拆分文件,默认读取标准输入(-
表示标准输入)。PREFIX
:输出文件名前缀,默认是x
。
split 核心参数详解
1. 以行数拆分文件
split -l NUMBER FILE PREFIX
-l, --lines=NUMBER
每个输出文件包含NUMBER
行,适合文本文件按行拆分。
示例:每 500 行拆分一次
split -l 500 largefile.txt segment_
2. 以字节数拆分文件
split -b SIZE FILE PREFIX
-b, --bytes=SIZE
每个输出文件大小为SIZE
字节。支持单位(如 K、M、G)。
示例:每 10MB 拆分一次
split -b 10M largefile.dat part_
3. 精准拆分:限制每行最大字节数
split -C SIZE FILE PREFIX
-C, --line-bytes=SIZE
每个输出文件最多包含SIZE
字节,且不拆分行。适用于行较长且不想切断的情况。
4. 使用不同后缀命名规则
默认后缀长度为 2,使用字母 aa、ab…
-a N, --suffix-length=N
设置后缀长度为 N 位。-d, --numeric-suffixes[=FROM]
使用数字后缀,默认从 0 开始,如 00、01、02…-x, --hex-suffixes[=FROM]
使用十六进制后缀,方便更多拆分文件时区分。
示例:使用 3 位数字后缀,从 100 开始
split -a 3 -d --numeric-suffixes=100 largefile.txt output_
5. 添加额外后缀
--additional-suffix=SUFFIX
在拆分文件名后附加指定后缀,比如 .txt
,方便文件识别。
示例:
split -l 1000 --additional-suffix=.txt bigfile data_
输出文件会是 data_aa.txt
、data_ab.txt
等。
6. 按块数量拆分
split -n CHUNKS FILE PREFIX
-n, --number=CHUNKS
按指定块数拆分文件,CHUNKS 格式支持多种模式:
CHUNKS | 说明 |
---|---|
N | 将文件平均拆成 N 个块 |
K/N | 只输出第 K 块内容到标准输出 |
l/N | 不拆分行,平均拆成 N 块 |
l/K/N | 不拆分行,输出第 K 块 |
r/N | 轮流拆分成 N 块 |
r/K/N | 轮流拆分,输出第 K 块 |
示例:拆成 5 个文件,不拆分行
split -n l/5 bigfile.txt part_
7. 使用自定义分隔符
split -t SEP FILE PREFIX
-t, --separator=SEP
使用自定义分隔符替代换行符,支持\0
表示 NUL 字符。
适合处理用特殊分隔符的文件。
8. 过滤输出内容
split --filter=COMMAND FILE PREFIX
拆分后每个小文件通过 COMMAND
处理,例如压缩或加密。
示例:拆分并压缩每个小文件
split -l 1000 --filter='gzip > $FILE.gz' bigfile.txt part_
9. 其他实用参数
-e, --elide-empty-files
避免生成空文件,配合-n
使用更精准。-u, --unbuffered
不缓冲,实时写入,适合流水线拆分。--verbose
输出每个文件生成信息,方便监控拆分过程。--help
和--version
查看帮助和版本信息。
split 拆分文件名示例
默认:
xaa
xab
xac
...
加前缀:
segment_aa
segment_ab
...
数字后缀:
segment_00
segment_01
...
总结
split
是处理大文件拆分的利器,支持:
- 按行数或字节数拆分
- 自定义后缀长度和格式
- 支持分块拆分和过滤处理
- 配合管道流实现复杂流程