当我们有一个很大的文件需要处理时,可以先用 split 分割后再处理.
split 的命令格式:
split [-b ][-C ][-][-l ][要切割的文件][输出文件名前缀][-a ]
最常用的选项,都在这里了:
- -b<字节>:指定按多少字节进行拆分,也可以指定 K、M、G、T 等单位。
- -<行数>或-l<行数>:指定每多少行要拆分成一个文件。
- 输出文件名前缀:设置拆分后的文件的名称前缀,split 会自动在前缀后加上编号,默认从 aa 开始。
- -a<后缀长度>:默认的后缀长度是 2,也就是按 aa、ab、ac 这样的格式依次编号。
# 先看一下文件的 MD5 值
md5sum test.tar.gz
#以大小来切割
split -b 100m test.tar.gz
#切割后传输并合并
cat xaa xab xac .. > test.tar.gz
# 比较合并后文件的 MD5 值是否和原来的相等,如果不相等可能是某个小文件的传输出了问题,比较一下小文件的 md5
使用dd if生成测试文件
生成一个大小为100KB的测试文件:
# dd if=/dev/zero bs=100k count=1 of=date.file 1+0 records in 1+0 records out 102400 bytes (102 kB) copied, 0.00043 seconds, 238 MB/s
指定文件大小来切割:
# split -b 10k date.file # ls date.file xaa xab xac xad xae xaf xag xah xai xaj
文件被分割成多个带有字母的后缀文件,
-d参数:指点数字后缀(默认为字母后缀)
-a 参数:指定后缀的长度
# split -b 10k date.file -d -a 3 # ls date.file x000 x001 x002 x003 x004 x005 x006 x007 x008 x009
为分割后的文件指定文件名的前缀:
# split -b 10k date.file -d -a 3 split_file # ls date.file split_file000 split_file001 split_file002 split_file003 split_file004 split_file005 split_file006 split_file007 split_file008 split_file009
指定行数来切割小文件:
split -l 10 date.file
http://c.biancheng.net/linux/split.html