linux大文件拆分split
环境:centos
1、split帮助查看
用法:split[OPTION]。。。[输入[前缀]] 将固定大小的片输出到PREFIXaa,PREFIXab,…;默认值大小为1000行,默认前缀为“x”。没有输入,或者当输入时是-,读取标准输入。 长选项的强制参数对于短选项也是必需的。 -a、 --suffix=N 生成长度为N的后缀(默认为2) --additional-suffix=suffix 在文件名后附加一个后缀 -b、 --bytes=SIZE 放入每个输出文件的大小字节 -C、 --line-bytes=size 每个输出文件最多放入行的大小字节 -d、 --numeric-suffixes[=FROM] 使用数字后缀而不是字母后缀;从更改起始值(默认值0) -e、 --elide-empty-files 不生成带有“-n”的空输出文件 --filter=command 写入shell命令;文件名为$file -l、 --lines=NUMBER 放入每个输出文件的NUMBER行 -n、 --number=CHUNKS 生成CHUNKS输出文件;参见下面的解释 -u、 --unbuffered 没有缓冲立即用“-n r/…”将输入复制到输出 --verbose 打印诊断就在每个诊断之前输出文件已打开 --help 显示此帮助并退出 --version 输出版本信息并退出 SIZE是一个整数和可选单位(例如:10M是10*1024*1024)。单位是K,M,G,T,P,E,Z,Y(1024的幂)或KB,MB。。。(1000的幂)。 块可以是: N 根据输入的大小分成N个文件 K/N 输出到标准输出 l/N 拆分为N个文件而不拆分行 l/K/N 不分行输出N的第K位到标准输出 r/N 类似于“l”,但使用循环分布 r/K/N 只将N的Kth输出到标准输出
2、最简单使用
[root@deam a]# split file.txt #默认按1000行拆分成以x开头的多个文件 [root@deam a]# ll total 124 -rw-r--r-- 1 root root 48894 Aug 5 20:41 file.txt -rw-r--r-- 1 root root 3893 Aug 5 21:28 xaa -rw-r--r-- 1 root root 5000 Aug 5 21:28 xab -rw-r--r-- 1 root root 5000 Aug 5 21:28 xac
2、指定输出文件格式
[root@deam a]# split file.txt -d -a 2 out #指定输出文件格式 out开头 -d指定数字开始‘00’ -a 指定两位 [root@deam a]# ll total 124 -rw-r--r-- 1 root root 48894 Aug 5 20:41 file.txt -rw-r--r-- 1 root root 3893 Aug 5 21:32 out00 -rw-r--r-- 1 root root 5000 Aug 5 21:32 out01 -rw-r--r-- 1 root root 5000 Aug 5 21:32 out02
3、指定分割行数和输出文件格式
[root@deam a]# split -l 2000 file.txt -d -a 2 out #指定拆分行数 -l 指定 2000行 [root@deam a]# ll total 108 -rw-r--r-- 1 root root 48894 Aug 5 20:41 file.txt -rw-r--r-- 1 root root 8893 Aug 5 21:35 out00 -rw-r--r-- 1 root root 10000 Aug 5 21:35 out01 [root@deam a]# cat out00|wc -l #统计文件2000行 2000
4、按指定大小进行拆分
[root@deam a]# split -b 10k file.txt #每10k拆分成一个文件,默认不加单位就是字节,也可以带单位比如KB,MB等 [root@deam a]# ll total 104 -rw-r--r-- 1 root root 48894 Aug 5 20:41 file.txt -rw-r--r-- 1 root root 10240 Aug 5 21:39 xaa -rw-r--r-- 1 root root 10240 Aug 5 21:39 xab
5、对文件的合并
[root@deam a]# cat xa* >> file.txt #将拆分的所有文件合并成一个文件
做一个决定,并不难,难的是付诸行动,并且坚持到底。