|
|
# split
|
|
|
|
|
|
## 说明
|
|
|
|
|
|
**split命令** 可以将一个大文件分割成很多个小文件,有时需要将文件分割成更小的片段,比如为提高可读性,生成日志等
|
|
|
|
|
|
```markdown
|
|
|
-b:,
|
|
|
-C:每一输出档中,单行的最大 byte 数
|
|
|
-d:
|
|
|
-l:
|
|
|
-a:(默认为2)
|
|
|
|
|
|
用法:split [选项] [输入 [前缀]]
|
|
|
输出固定大小的INPUT到PREFIX; 默认大小为1000行,默认PREFIX为“x”。 没有INPUT,或INPUT为 - 时,读取标准输入
|
|
|
|
|
|
-a, --suffix-length=N 指定后缀长度 (default 2)
|
|
|
--additional-suffix=SUFFIX append an additional SUFFIX to file names
|
|
|
-b, --bytes=SIZE 值为每一输出档案的大小;单位为 byte
|
|
|
-C, --line-bytes=SIZE 每个输出文件最多放置SIZE字节行数,单行最大byte数
|
|
|
-d, --numeric-suffixes[=FROM] 取代字母,使用数字作为后缀,FROM changes the start value (default 0)
|
|
|
-e, --elide-empty-files do not generate empty output files with '-n'
|
|
|
--filter=COMMAND write to shell COMMAND; file name is $FILE
|
|
|
-l, --lines=NUMBER 值为每一输出档的列数大小
|
|
|
-n, --number=CHUNKS generate CHUNKS output files; see explanation below
|
|
|
-u, --unbuffered immediately copy input to output with '-n r/...'
|
|
|
--verbose 在每个输出文件打开前输出文件特征
|
|
|
|
|
|
|
|
|
SIZE是一个整数加上可选的单位(例如: 10M is 10*1024*1024)
|
|
|
单位有:K, M, G, T, P, E, Z, Y (powers of 1024) or KB, MB, ... (powers of 1000).
|
|
|
|
|
|
CHUNKS may be:
|
|
|
N split into N files based on size of input
|
|
|
K/N output Kth of N to stdout
|
|
|
l/N split into N files without splitting lines
|
|
|
l/K/N output Kth of N to stdout without splitting lines
|
|
|
r/N like 'l' but use round robin distribution
|
|
|
r/K/N likewise but only output Kth of N to stdout
|
|
|
|
|
|
```
|
|
|
|
|
|
## 实例
|
|
|
|
|
|
```bash
|
|
|
dd if=/dev/zero bs=100k count=1 of=date.file # 生成一个大小为100KB的测试文件
|
|
|
split -b 10k date.file # 使用split命令将上面创建的date.file文件分割成大小为10KB的小文件
|
|
|
split -b 10k date.file -d -a 3 # file分割成多个后缀文件,若想用数字后缀可使用-d参数,同时可使用-a length来指定后缀长度
|
|
|
split -b 10k date.file -d -a 3 split_file # 为分割后的文件指定文件名的前缀
|
|
|
|
|
|
# 使用-l选项根据文件的行数来分割文件,例如把文件分割成每个包含100行的小文件
|
|
|
split -l 100 test.sql -d -a 2 --additional-suffix=.sql test
|
|
|
|
|
|
```
|