将大文件切割成多个小文件
发布于 2024-01-26
这种场景还是挺常见的,比如:
- 文本文件太大了,编辑器打开耗时太长,需要切割成小文件再打开
- 某些工具传输单个文件有大小限制,如微信、公司邮箱等
这种时候就可以借助 split
来切割文件了,传输/处理完后再使用 cat
命令来拼接成完整的文件。
重点要提的一点是 split
不仅可以用来切割文本文件,也可以切割任何二进制文件。
切割之后再使用 cat
命令拼接得到的依旧是原来的,完整的,有效的二进制文件。
split
命令的用法其实很简单,参数和支持的选项都不多。
基本用法
split [选项] [要切割的文件 [切割后的小文件名称前缀]]
split 命令是支持管道操作符的,
如果要切割的文件没传值或者传值为 -
,则表示从标准输入读取数据。
例如:
echo "hello world" | split -b 5 - test_
切割文本文件(按行数切割)
split -l 100 input_file.txt output_prefix
这将把 input_file.txt
分割成每个包含 100 行的小文件,以 output_prefix
为小文件名前缀。
切割二进制文件(按大小切割)
split -b 20M large_file.exe output_prefix
这将把 large_file.exe
分割成每个文件大小为 20M
的部分,以 output_prefix
为小文件名前缀。
合并为完整的文件
cat output_prefix* > new_large_file.exe
这样就可以把切割后的多个小文件拼接成一个大文件,
可以和原始的大文件对比一下 md5
, 它们是一样的,说明文件并没有被损坏。
也就是说,如果原文件是图片,合并后还能正常打开查看; 原文件是 windows 安装包,合并后还能双击安装[手动狗头]。
其他选项的用法示例
echo "hello world" | split -b5 -a4 -d --additional-suffix=.txt - test_
-a4
: 指定文件后缀长度为 4 位-d
: 指定使用数字作为文件序号,而不是字母--additional-suffix=.txt
: 指定为所有文件再添加额外的后缀为.txt
如上命令将得到三个文件,分别是
test_0000.txt test_0001.txt test_0002.txt