split命令用于把一个文件分割成多个文件,可以以行为单位分割,也可以以字节为单位分割。
split [OPTION]... [INPUT [PREFIX]]
选项:
-a, --suffix-length=N:指定生成的文件后缀长度,默认为2,即aa、ab......
例:split -l 20 -a 3 FILE或split -l 20 --suffix-length=3 FILE,生成的文件后缀就会是aaa、aab......
--additional-suffix=SUFFIX:在生成的文件名结尾增加一个指定名称的后缀
例:split -l 20 --additional-suffix=whsir FILE,生成的文件就会是xaawhsir、xabwhsir......
注:生成时不指定生成的文件前缀,默认以x开头。
-b, --bytes=SIZE:指定生成的文件大小进行切割。
例:split -b 10m FILE,则会切割成10m大小的1个或多个文件。
注:如果想把切割后的文件合并,命令是:cat xa* > FILE,这里的FILE可以是原来的FILE名称,也可以是其他,合并后的文件与老的文件md5值相同。
-C, --line-bytes=SIZE:与-b选项类似,按照生成的文件大小进行切割,和-b区别在于,-C在切割时会尽量保持每行的完整。
-d, --numeric-suffixes[=FROM]:使用数字作为后缀,默认从数字0开始。
例:split -b 10k -d FILE,此时生成的新文件后缀就是以00、01、02结尾了。
-e, --elide-empty-files:不生成空文件,当一个文件为2字节时,使用-n选项可能会导致出现0字节的空文件,加上-e选项就不会产生空文件。
例:split -e -n 10 FILE,假设这里FILE为2字节,使用-e选项后,就不会生成10个文件,实际生成2个文件。
--filter=COMMAND:将结果作为命令输入,类似管道“|”。
例:将whsir.txt分割成多个10k大小的文件并进行gz压缩,cat whsir.txt | split -b 10k --filter='gzip > $FILE.gz'
-l, --lines=NUMBER:指定行数来切割
例:当前有一个50行的whsir.txt文件,按照20行为一个文件进行切割,命令为split -l 20 whsir.txt或split --lines=20 whsir.txt,如果想指定切割后的文件名称前缀,则跟上切割后的文件名称split -l 20 whsir.txt NEWFILE,新生成的文件后缀以aa、ab......来排序。
-n, --number=CHUNKS:生成CHUNKS文件。CHUNKS可以是N、K/N、l/N、l/K/N、r/N、r/K/N
如果CHUNKS为N,则切割成指定数量的文件,可能会产生0字节的空文件。
如果CHUNKS为K/N,输出预切割N个文件中的第K个文件内容,这里是直接输出,并不是实际切割完成后输出,例如split -n 1/2 FILE,输出二个文件中,第一个文件内容。
如果CHUNKS为l/N,按行的方式进行切割,切割N个文件,如果行比较少,N比较多,那么可能会出现空文件。
如果CHUNKS为l/K/N,按l/N切割的同时,输出第K个文件内容。
如果CHUNKS为r/N,类似l的方式,但使用轮询方式切割。
如果CHUNKS为r/K/N,按r/N切割的同时,输出第K个文件内容。
-u, --unbuffered:使用-n的r模式时,不进行缓冲,立即输出
--verbose:输出分割后的文件
--help:显示帮助
--version:显示版本