split提供两种方式对文件进行切割:
-
根据行数切割,通过-l参数指定需要切割的行数
-
根据大小切割,通过-b参数指定需要切割的大小
1.1 根据行数切割
如下以一个3.4G大小的日志文件做切割演示,每一个文件按照50000行做切割,指定文件名为split-line,-d参数以数字的方式显示
#源文件大小 [root@VM_3_50_centos split]# ls -l 2020011702-www.happylauliu.cn.gz -h -rw-r--r-- 1 root root 3.4G 1月 17 09:42 2020011702-www.happylauliu.cn.gz #按行切割 [root@~]# split -l 50000 -d --verbose 2020011702-www.happylauliu.cn.gz split-line 正在创建文件"split-line00" 正在创建文件"split-line01" 正在创建文件"split-line02" 正在创建文件"split-line03" 正在创建文件"split-line04" 正在创建文件"split-line05" 正在创建文件"split-line06" 正在创建文件"split-line07" 正在创建文件"split-line08" 正在创建文件"split-line09" 正在创建文件"split-line10" ... 正在创建文件"split-line9168" 正在创建文件"split-line9169" 正在创建文件"split-line9170" 正在创建文件"split-line9171" #查看切割文件行数确认 [root@VM_3_50_centos split]# wc -l split-line00 50000 split-line00 [root@VM_3_50_centos split]# wc -l split-line01 50000 split-line01 [root@VM_3_50_centos split]# wc -l split-line9170 50000 split-line9170 [root@VM_3_50_centos split]# wc -l split-line9171 1020 split-line9171 #查看文件大小 [root@VM_3_50_centos split]# ls -lh split-line0[0-9] -rw-r--r-- 1 root root 14M 1月 17 16:54 split-line00 -rw-r--r-- 1 root root 14M 1月 17 16:54 split-line01 -rw-r--r-- 1 root root 14M 1月 17 16:54 split-line02 -rw-r--r-- 1 root root 14M 1月 17 16:54 split-line03 -rw-r--r-- 1 root root 14M 1月 17 16:54 split-line04 -rw-r--r-- 1 root root 14M 1月 17 16:54 split-line05 -rw-r--r-- 1 root root 14M 1月 17 16:54 split-line06 -rw-r--r-- 1 root root 14M 1月 17 16:54 split-line07 -rw-r--r-- 1 root root 14M 1月 17 16:54 split-line08 -rw-r--r-- 1 root root 14M 1月 17 16:54 split-line09
指定行数后会自动做切割,即达到5000行之后自动切割,通过-d参数文件名会自动以数字的方式命名,切割后,每个文件大小为14M,此时再对文件进行分析将会方便边界很多,同时文件数量也会很多,可以增加行数的方式进行切割,方便分析。
1.2 根据大小切割
除了按照行数切割之外,split还支持通过文件大小进行切割,通过指定-b参数指定文件大小进行切割,文件大小单位支持K, M, G, T, P, E, Z,如下以切割为500M演示文件切割过程
[root@~]# split -b 500M -d --verbose 2020011702-www.happylauliu.cn.gz split-size 正在创建文件"split-size00" 正在创建文件"split-size01" 正在创建文件"split-size02" 正在创建文件"split-size03" 正在创建文件"split-size04" 正在创建文件"split-size05" 正在创建文件"split-size06" [root@VM_3_50_centos split]# ls -lh split-size0* -rw-r--r-- 1 root root 500M 1月 17 17:03 split-size00 -rw-r--r-- 1 root root 500M 1月 17 17:03 split-size01 -rw-r--r-- 1 root root 500M 1月 17 17:04 split-size02 -rw-r--r-- 1 root root 500M 1月 17 17:04 split-size03 -rw-r--r-- 1 root root 500M 1月 17 17:04 split-size04 -rw-r--r-- 1 root root 500M 1月 17 17:04 split-size05 -rw-r--r-- 1 root root 444M 1月 17 17:04 split-size06
1.3 多文件合并
split是用户将大文件切割为多个小文件,如果需要将多个小文件合并为一个文件怎么处理呢?可以使用文件重定向方式实现,如下演示两个小文件合并为一个文件
[root@VM_3_50_centos split]# cat split-size01 split-size02 >two-file-merge [root@VM_3_50_centos split]# ls -lh two-file-merge -rw-r--r-- 1 root root 1000M 1月 17 17:20 two-file-merge
合并方式通过读取文件的方式+输出重定向,对于大文件一样会存在性能的问题,建议根据需要使用。