tongsiying

阅读|运动|自律

0%

split

前言

split 命令:将指定的文件切割小的文件

csplit命令:按照指定的格式将文件分块为”xx00”、”xx01”…并输出。同时每个分块文件的字节数也将被输出到标准输出。

1.使用方法

split :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-d 使用数字而不是字母作为切割后的小文件的后缀;
-v 显示详细的处理信息
-b <字节> 每个分割文件的大小
-C <数字> 指定输出到每一个文件的每一行的大小,数字后缀可以是
b: 512(blocks)
K: 1024(kibiBytes)
KB: 1000(kiloBytes)
M: 1024*1024(mebiBytes)
MB: 1000*1000(megaBytes)
G: 1024*1024*1024(gibiBytes)
GB: 1000*1000*1000(gibaBytes)
T, P, E, Z, Y
-l<行数> 指定切割的行数作为切割文件的单位;
--help 显示帮助信息
--version 显示版本信息

csplit:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
用法:csplit [选项]... 文件 格式...
按照指定的格式将文件分块为"xx00"、"xx01"...并输出。
同时每个分块文件的字节数也将被输出到标准输出。

长选项必须使用的参数对于短选项时也是必需使用的。
-b, --suffix-format=格式 使用sprintf 格式代替%02d
-f, --prefix=前缀 使用指定前缀代替"xx"
-k, --keep-files 不移除错误的输出文件
-n, --digits=数位 使用指定的进制数位代替二进制
-s, --quiet, --silent 不显示输出文件的尺寸计数
-z, --elide-empty-files 删除空的输出文件
--help 显示此帮助信息并退出
--version 显示版本信息并退出

如果文件为"-",则读取标准输入。每个"格式"可以是:

整数 不包括指定的行,并以其为文件分块边界
/表达式/[偏移量] 不包括匹配到的行,并以其为文件分块边界
%表达式%[偏移量] 预先跳过匹配的行数,以其为文件分块边界
{整数} 将之前指定的模式重复指定的次数
{*} 将之前指定的模式重复尽可能多的次数。


一个行的偏移量需要在正整数值之后声明"+" 或 "-"。

2. 例子

split

例1

1
2
3
4
5
6
7
8
#将文件分割成,4M的小块,并用数字代替字母
[zhangy@BlackGhost awksed]$ split -d -b 4m google.tar.gz

#分割文件 取文件前300行开始分割
[zhangy@BlackGhost awksed]$ split -l 300 b.txt

#合并文件
[zhangy@BlackGhost awksed]$ cat x* > google_bak.tar.gz

例2

1
2
3
4
5
6
7
8
9
[root@pps public_rw]# split -b 20m RevolutionOS.rmvb RevOS_part_  
[root@pps public_rw]# ls -lh
总计 552M
-rwx------ 1 hoho hoho 276M 2005-09-09 RevolutionOS.rmvb
-rw-r--r-- 1 root root 20M 03-19 17:59 RevOS_part_aa
-rw-r--r-- 1 root root 20M 03-19 17:59 RevOS_part_ab
.............
-rw-r--r-- 1 root root 20M 03-19 18:00 RevOS_part_am
-rw-r--r-- 1 root root 16M 03-19 18:00 RevOS_part_an

例3

1
# split -l 200 test.txt test_part      #每200行生成一个文件

例4

1
2
3
4
5
6
# -a 指定后缀的长度(默认为2位)
# -d 使用数组作为后缀(默认为字母)

split -l 10700000 dataset -d -a 1 dataset_

#将dataset文件分割成每个文件数据量107w的小文件,小文件以dataset_前缀+一个数字命名;如dataset_1,dataset_2,dataset_3等

csplit

例1

1
2
3
4
5
6
7
[root@localhost www]# csplit test.rb 5    #分割文件
148
34

[root@localhost www]# ll |grep xx #查看分割文件
-rw-r--r-- 1 root root 16 05-04 16:58 xx00
-rw-r--r-- 1 root root 166 05-04 16:58 xx01
赞赏一下吧~