linux分割文件split命令

分割文件split

  档处理文件时,有时需要将文件做分隔处理,split命令用于分割文件,可以分割文本文件,按指定的行数分隔,每个分隔的文件都包含相同的行数。split可以分隔非文本文件,分割时可以指定每个文件的大小,分隔后的文件有相同的大小。split后的文件可以使用cat命令组装在一起。

      [root@CentOS cmd]# cat src.txt

      [root@CentOS cmd]# split src.txt

      [root@CentOS cmd]# ls

      #split默认按1000行分隔文件

      [root@CentOS cmd]# ls

      [root@CentOS cmd]# wc -l *

      [root@CentOS cmd]# ls -lhtr

      #按每个文件3行分隔文件

      [root@CentOS cmd]# split -l 3 src.txt

      [root@CentOS cmd]# ls

      [root@CentOS cmd]# cat xa*

      #中间结果省略

      [root@CentOS cmd]# cat xaa

      #如文件行数太多,使用默认的2个字符已经不能满足需求

      [root@CentOS cmd]# split -l 3 src.txt

      [root@CentOS cmd]# rm -f xa*

      [root@CentOS cmd]# ls

      #指定分隔前缀的长度

      [root@CentOS cmd]# split -a 5 -l 3 src.txt

      [root@CentOS cmd]# ls

      [root@CentOS cmd]# rm -f xaaaa*

      #使用数字前缀

      [root@CentOS cmd]# split -a 5 -l 3 -d src.txt

      #指定每个文件的大小,默认为字节,可以使用1m类似的参数默认为B,另外有单位b,k,m等

      SIZE可加入单位:b代表512,k代表1k,m代表1Meg

      [root@CentOS cmd]# split -a 5 -b 3 src.txt

      [root@CentOS cmd]# ls -l xaaaaa

      [root@CentOS cmd]# src.txt xaa xaaaaa xaaaab xaaaac xaaaae xaaaaf xaaaag

      [root@CentOS cmd]# cat xa* >dst.txt

      [root@CentOS cmd]# md5sum src.txt dst.txt

      #指定分隔前缀

      [root@CentOS cmd]# split -a 5 -b 3000 src.txt src_

      [root@CentOS cmd]# ls

当把一个大的文件分拆为多个小文件后,如何校验文件的完整性呢,一般通过MD5工具来校验对比。对应的Linux命令为md5sum。

提示:有关md5的校验机制和原理请参考相关文档,本节不再描述。

CentOS 中用 Split 命令分割文件的方法

CentOS 里切割大文件的命令如下:

NAME
split – split a file into pieces
SYNOPSIS
split [OPTION]… [INPUT [PREFIX]]
DESCRIPTION
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
generate suffixes of length N (default 2)
–additional-suffix=SUFFIX
append an additional SUFFIX to file names
-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[=FROM]
use numeric suffixes instead of alphabetic; 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
put NUMBER lines per output file
-n, –number=CHUNKS
generate CHUNKS output files; see explanation below
-u, –unbuffered
immediately copy input to output with ‘-n r/…’
–verbose
print a diagnostic just before each output file is opened
–help display this help and exit
–version
output version information and exit

常用选项说明如下:

-a : 指定后缀长度
-b : 每个文件多少字节
-d : 使用数字后缀而不是字母
-l : 指定每个文件的行数
比如我想让后缀长度为 2,即 -a 2。用数字后缀 -d。每个文件 10M,即 -b 10m。命令可以设计如下:

split -a 2 -d -b 10m /var/lib/mysql/general.log nowamagic

会在 /root 文件夹下生成下面的切割文件:

nowamagic00
nowamagic01
nowamagic02
nowamagic03
nowamagic04
nowamagic05
nowamagic06
nowamagic07
nowamagic08
nowamagic09

除了最后一个文件不是10M(有可能恰好10M,不过几率很小),其它都是。