从函数层面上来看是对文件进行切割了,我们可以使用split命令进行文件的很多操作,下现来看几个Linux下split 命令使用例子.
按大小切割,每100M切割:split -b 100m filename
按行数切割,每100w行切割,并带上前缀:split -l10000000 pc.txt i_
合并:cat x* > pc.txt
split:切割文件
语 法:split [--help][--version][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]
补充说明:split可将文件切成较小的文件,预设每1000行会切成一个小文件
参 数:
-l<行数> 指定每多少行就要切成一个小文件
-b<字节> 指定每多少字就要切成一个小文件。支持单位:m,k
-C<字节> 与-b参数类似,但切割时尽量维持每行的完整性
?help 显示帮助
?version 显示版本信息
[输出文件名] 设置切割后文件的前置文件名,split会自动在前置文件名后再加上编号.
实例1、以每个文件20MB分割
分割文件为多个20MB的文件,附带-b选项命令如下:
$ split -b 20M logdata
$ ls -lh | tail -n +2
-rw------- 1 sathiya sathiya 102M Jul 25 18:47 logdata
-rw------- 1 sathiya sathiya 20M Jul 25 19:20 xaa
-rw------- 1 sathiya sathiya 20M Jul 25 19:20 xab
-rw------- 1 sathiya sathiya 20M Jul 25 19:20 xac
-rw------- 1 sathiya sathiya 20M Jul 25 19:20 xad
//phpfensi.com
-rw------- 1 sathiya sathiya 20M Jul 25 19:20 xae
-rw------- 1 sathiya sathiya 1.6M Jul 25 19:20 xaf
实例2、以每个文件50MB指定前缀分割
使用--bytes选项把文件分割成多个50MB的文件,--bytes类似-b选项,在第二个参数指定前缀.
$ split --bytes=50M logdata mydatafile
$ ls -lh
total 204M
-rw------- 1 sathiya sathiya 102M Jul 25 18:47 logdata
-rw------- 1 sathiya sathiya 50M Jul 25 19:23 mydatafileaa
-rw------- 1 sathiya sathiya 50M Jul 25 19:23 mydatafileab
-rw------- 1 sathiya sathiya 1.6M Jul 25 19:23 mydatafileac
实例3、以每个文件1000行分割
split命令分割文件成每个文件1000行,并且文件名依次为 [前缀]aa,[前缀]ab,[前缀]ac等,默认的前缀是X,每个文件的行数为1000行,命令如下:
$ split mylog
$ wc -l *
4450 mylog
1000 xaa
1000 xab
1000 xac
1000 xad
450 xae
实例4、基于行数分割文件
使用-l选项指定行数来把文件分割成多个行数相同的文件.
$ wc -l testfile
2591 testfile
$ split -l 1500 testfile importantlog
$ wc -l *
1500 importantlogaa
1091 importantlogab
2591 testfile
实例5、以数字后缀命名分割文件
使用-d选项可以指定后缀为数字,如00,01,02..,而不是aa,ab,ac.
$ split -d testfile
$ ls
testfile x00 x01 x02
可用选项
短选项 长选项 选项描述
-b --bytes=SIZE SIZE 值为每一输出档案的大小,单位为 byte。
-C --line-bytes=SIZE 每一输出档中,单行的最大 byte 数。
-d --numeric-suffixes 使用数字作为后缀。
-l --lines=NUMBER NUMBER 值为每一输出档的列数大小。
合并cat使用方法
cat命令
语法:cat [-AbeEnstTuv] [--help] [--version] fileName
-n 或 ?number 由 1 开始对所有输出的行数编号
-b 或 ?number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 ?squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 ?show-nonprinting
#cat常用功能
#一次显示整个文件
cat filename
#创建一个文件,只能创建新文件,不能编辑已有文件
cat > filename
#将几个文件合并为一个文件。
cat file1 file2 > file
所以上面的示例中将分割文件合并,可以使用:
#合并
cat a.tar.gz.* > a.tar.gz
#合并并解压
cat a.tar.gz.* | tar -zxv。