Linux shell命令详解:全面掌握 split 文件拆分工具用法

文章目录

在日常的 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.txtdata_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 是处理大文件拆分的利器,支持:

  • 按行数或字节数拆分
  • 自定义后缀长度和格式
  • 支持分块拆分和过滤处理
  • 配合管道流实现复杂流程

相关阅读:如何使用 Shell 命令完成文件的切分与合并


也可以看看