1.根据行数切割
如下以一个372M大小的日志文件做切割演示,每一个文件按照50000行做切割,指定文件名为split-line,-d参数以数字的方式显示。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| #源文件大小
[root@localhost /tmpdisk/test]$ ls -lh
总用量 372M
-rw-------. 1 root root 372M 10月 26 09:08 messages
#按行切割
[root@localhost /tmpdisk/test]$ split -l 50000 -d --verbose messages split-line
#查看大小
[root@localhost /tmpdisk/test]$ ls -lh
总用量 743M
-rw-------. 1 root root 372M 10月 26 09:08 messages
-rw-r--r--. 1 root root 4.5M 10月 26 09:21 split-line00
-rw-r--r--. 1 root root 4.2M 10月 26 09:21 split-line01
-rw-r--r--. 1 root root 7.7M 10月 26 09:22 split-line02
-rw-r--r--. 1 root root 4.2M 10月 26 09:22 split-line03
-rw-r--r--. 1 root root 4.2M 10月 26 09:22 split-line04
-rw-r--r--. 1 root root 4.2M 10月 26 09:22 split-line05
-rw-r--r--. 1 root root 4.2M 10月 26 09:22 split-line06
-rw-r--r--. 1 root root 4.2M 10月 26 09:22 split-line07
-rw-r--r--. 1 root root 4.2M 10月 26 09:22 split-line08
-rw-r--r--. 1 root root 4.2M 10月 26 09:22 split-line09
-rw-r--r--. 1 root root 4.3M 10月 26 09:22 split-line10
|
2.根据大小切割
除了按照行数切割之外,split还支持通过文件大小进行切割,通过指定-b参数指定文件大小进行切割,文件大小单位支持K, M, G, T, P, E, Z,如下以切割为50M演示文件切割过程。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| [root@localhost /tmpdisk/test]$ split -b 50M -d --verbose messages split-size
正在创建文件"split-size00"
正在创建文件"split-size01"
正在创建文件"split-size02"
正在创建文件"split-size03"
正在创建文件"split-size04"
正在创建文件"split-size05"
正在创建文件"split-size06"
正在创建文件"split-size07"
[root@localhost /tmpdisk/test]$ ls -lh
总用量 743M
-rw-------. 1 root root 372M 10月 26 09:08 messages
-rw-r--r--. 1 root root 50M 10月 26 09:25 split-size00
-rw-r--r--. 1 root root 50M 10月 26 09:25 split-size01
-rw-r--r--. 1 root root 50M 10月 26 09:25 split-size02
-rw-r--r--. 1 root root 50M 10月 26 09:25 split-size03
-rw-r--r--. 1 root root 50M 10月 26 09:25 split-size04
-rw-r--r--. 1 root root 50M 10月 26 09:25 split-size05
-rw-r--r--. 1 root root 50M 10月 26 09:25 split-size06
-rw-r--r--. 1 root root 22M 10月 26 09:25 split-size07
|
3.多文件合并
split是用户将大文件切割为多个小文件,如果需要将多个小文件合并为一个文件怎么处理呢?可以使用文件重定向方式实现,如下演示两个小文件合并为一个文件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| [root@localhost /tmpdisk/test]$ cat split-size00 split-size01 > messages1
[root@localhost /tmpdisk/test]$ ls
messages messages1 split-size00 split-size01 split-size02 split-size03 split-size04 split-size05 split-size06 split-size07
[root@localhost /tmpdisk/test]$ ls -lh
总用量 843M
-rw-------. 1 root root 372M 10月 26 09:08 messages
-rw-r--r--. 1 root root 100M 10月 26 09:27 messages1
-rw-r--r--. 1 root root 50M 10月 26 09:25 split-size00
-rw-r--r--. 1 root root 50M 10月 26 09:25 split-size01
-rw-r--r--. 1 root root 50M 10月 26 09:25 split-size02
-rw-r--r--. 1 root root 50M 10月 26 09:25 split-size03
-rw-r--r--. 1 root root 50M 10月 26 09:25 split-size04
-rw-r--r--. 1 root root 50M 10月 26 09:25 split-size05
-rw-r--r--. 1 root root 50M 10月 26 09:25 split-size06
-rw-r--r--. 1 root root 22M 10月 26 09:25 split-size07
|
合并方式通过读取文件的方式+输出重定向,对于大文件一样会存在性能的问题,建议根据需要使用。
4.多文件同一关键字筛选
1
2
3
| [root@localhost /tmpdisk/test]$ grep faild split-size*
split-size01:2023-09-07T10:54:01.447068+08:00 localhost jman[691]: init mysql default password faild
split-size01:2023-10-07T13:27:47.356650+08:00 localhost jman[695]: init mysql default password faild
|
[参考](微信公众平台 (qq.com)
)
注意
本文最后更新于 October 26, 2023,文中内容可能已过时,请谨慎使用。