Linux提供了spilt命令来切割文件,我们可以按照行、文件大小对一个大的文件进行切割。先来看看这个命令的帮助: [iteblog@iteblog iteblog]$ split --help
Usage: split [OPTION]... [INPUT [PREFIX]]
Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default
size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when INPUT
is -, read standard input.
Mandatory arguments to long options are mandatory for short options too.
-a, --suffix-length=N use suffixes of length N (default 2)
-b, --bytes=SIZE put SIZE bytes per output file
-C, --line-bytes=SIZE put at most SIZE bytes of lines per output file
-d, --numeric-suffixes use numeric suffixes instead of alphabetic
-l, --lines=NUMBER put NUMBER lines per output file
--verbose print a diagnostic just before each
output file is opened
--help display this help and exit
--version output version information and exit
SIZE may be (or may be an integer optionally followed by) one of following:
KB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.
Report split bugs to bug-coreutils@gnu.org
GNU coreutils home page:
General help using GNU software:
For complete documentation, run: info coreutils 'split invocation'
从帮助文件输出的信息我们可以看出,split命令支持两种特别的切割:按行和按大小。其中按大小切又可以分为两种:按固定大小切,这种模式下切出的文件大小和用户传进来的参数大小一致,但会出现一行文本被拆成几行;按最接近大小切,不会出现一行文本被切成几行的情况。
下面我们来看看如何使用split命令。假如我们需要按行切,可以用下面命令实现: [iteblog@iteblog iteblog]$ split -l 100 test
这样会产生很多个小文件,并且每个小文件里面的内容最多为100行;
如果我们需要按照大小切,可以用下面命令实现: [iteblog@iteblog iteblog]$ split -b 1m test
这样会产生很多大小为1MB的文件,如果我们不想一行数据被切割,那么可以使用下面命令实现: [iteblog@iteblog iteblog]$ split -C 1m test
结果也是会产生很多的大小小于1MB的文件,而且一条记录不会被拆成多行。
split默认产生的文件格式不太好,我们可以自定义输出文件的后缀等信息: [iteblog@iteblog iteblog]$ split -C 1m result -d -a 4 iteblog
-d参数是使用数字替代字母当作后缀;-a指的是采用多少位数字或字母当做后缀;最后面的iteblog代表切割出来文件的前缀。这样产生出来的文件名称为iteblogxxxx,其中x代表一位数字。