linux中用split -b按字节切分大文件最直接有效,支持k/m/g单位,推荐-d加数字后缀、-c按行切分文本,合并后需校验sha256并处理末尾换行符。

Linux 中用 split -b 按指定大小切割大文件最直接有效,关键在单位写法、命名控制和边界处理。
基础用法:指定字节大小切分
命令格式为:split -b SIZE input_file [prefix]。SIZE 支持单位 K(1024 字节)、M(1048576 字节)、G(1073741824 字节),不区分大小写。
-
split -b 500M large.log part_→ 切成每份最多 500MB 的文件,前缀为part_,输出part_aa、part_ab等 -
split -b 2G backup.img→ 不指定前缀时默认用x,生成xaa、xab - 最后一个小文件通常小于设定值,这是正常行为,无需干预
让文件名更实用:数字后缀与长度控制
字母后缀(aa/ab)不利于脚本排序和人工识别,推荐改用数字编号。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 加
-d启用数字后缀:split -b 100M -d data.tar part_→ 输出part_00、part_01 - 加
-a 3控制位数:split -b 50M -d -a 3 log.txt out_→ 得到out_000、out_001,方便按字典序拼接 - 注意:
-d在 macOS 或旧系统上可能不可用,需先安装 GNU coreutils(如brew install coreutils),再用gsplit
避免内容截断:对齐行边界(文本文件适用)
-b 是纯字节切分,可能把一行硬生生劈开。若处理日志、CSV、SQL 等文本,建议优先用 -C(line-bytes)模式。
-
split -C 100M -d access.log chunk_→ 尽量让每个分片以完整行为界,哪怕略超 100MB - 该选项不适用于二进制文件(如图片、压缩包),仅对换行符分隔的文本有效
- 验证是否切在行中间:对任一分片执行
tail -n1 chunk_00 | wc -l,结果应为 1;若为 0,说明末尾缺换行符
合并与校验:确保无损还原
切完不是终点,拼回去并确认一致性才真正可靠。
- 合并命令:
cat part_* > restored.log(注意 shell 展开顺序,数字后缀更安全) - 原始文件末尾无换行符时,拼接后也会缺失——校验前统一补一个:
(cat part_*; echo) | sha256sum对比(cat original.log; echo) | sha256sum - 快速抽查:对比首行
head -n1 original.log和head -n1 part_00;对比末行tail -n1 original.log和tail -n1 part_XX










