在日常的 Linux 文件处理工作中,split
命令是一款非常实用且高效的工具,尤其适用于将大型文件拆分成多个小文件,方便传输、备份或并行处理。本文将详细解读 split
命令的各项参数,帮助你快速上手并灵活运用。
split
?split
用于将一个文件按行数或字节大小拆分成多个小文件,默认以 1000 行一块拆分,拆分后的文件名格式为 x??
(如 xaa、xab 等)。当不指定文件时,split
会读取标准输入,方便和其他命令管道组合使用。
split [OPTION]... [FILE [PREFIX]]
FILE
:待拆分文件,默认读取标准输入(-
表示标准输入)。PREFIX
:输出文件名前缀,默认是 x
。split -l NUMBER FILE PREFIX
-l, --lines=NUMBER
每个输出文件包含 NUMBER
行,适合文本文件按行拆分。示例:每 500 行拆分一次
split -l 500 largefile.txt segment_
split -b SIZE FILE PREFIX
-b, --bytes=SIZE
每个输出文件大小为 SIZE
字节。支持单位(如 K、M、G)。示例:每 10MB 拆分一次
split -b 10M largefile.dat part_
split -C SIZE FILE PREFIX
-C, --line-bytes=SIZE
每个输出文件最多包含 SIZE
字节,且不拆分行。适用于行较长且不想切断的情况。默认后缀长度为 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_
--additional-suffix=SUFFIX
在拆分文件名后附加指定后缀,比如 .txt
,方便文件识别。
示例:
split -l 1000 --additional-suffix=.txt bigfile data_
输出文件会是 data_aa.txt
、data_ab.txt
等。
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_
-t, --separator=SEP
使用自定义分隔符替代换行符,支持 \0
表示 NUL 字符。适合处理用特殊分隔符的文件。
split --filter=COMMAND FILE PREFIX
拆分后每个小文件通过 COMMAND
处理,例如压缩或加密。
示例:拆分并压缩每个小文件
split -l 1000 --filter='gzip > $FILE.gz' bigfile.txt part_
-e, --elide-empty-files
避免生成空文件,配合 -n
使用更精准。-u, --unbuffered
不缓冲,实时写入,适合流水线拆分。--verbose
输出每个文件生成信息,方便监控拆分过程。--help
和 --version
查看帮助和版本信息。默认:
xaa
xab
xac
...
加前缀:
segment_aa
segment_ab
...
数字后缀:
segment_00
segment_01
...
split
是处理大文件拆分的利器,支持: