Linuxsplit分割⽂件命令解析
Linux split 命令可以将⼀个⼤⽂件分割成指定⼤⼩的很多个⼩⽂件,并且拆分速度⾮常的快,有时需要将⽂件分割成更⼩的⽚段,⽐如为提⾼可读性,⽣成⽇志。拆分⼀个1G⼤⼩的⽂件不到1秒的时间就可以完成,如果在Windows系统上进⾏操作估计会很卡很卡.
[root@server test]# which split
/usr/bin/split
[root@server test]# split --help
⽤法:split [选项]... [输⼊ [前缀]]
Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default
size is 1000 lines, and default PREFIX is 'x'.  With no INPUT, or when INPUT
is -, read standard input.
Mandatory arguments to long options are mandatory for short options too.
-a, --suffix-length=N  generate suffixes of length N (default 2)
--additional-suffix=SUFFIX  append an additional SUFFIX to file names
-b, --bytes=SIZE        put SIZE bytes per output file
-C, --line-bytes=SIZE  put at most SIZE bytes of lines per output file
-d, --numeric-suffixes[=FROM]  use numeric suffixes instead of alphabetic;
FROM changes the start value (default 0)
-e, --elide-empty-files  do not generate empty output files with '-n'
--filter=COMMAND    write to shell COMMAND; file name is $FILE
-l, --lines=NUMBER      put NUMBER lines per output file
-n, --number=CHUNKS    generate CHUNKS output files; see explanation below
-u, --unbuffered        immediately copy input to output with '-n r/...'
-
-verbose  在每个输出⽂件打开前输出⽂件特征
--help  显⽰此帮助信息并退出
--version  显⽰版本信息并退出
SIZE is an integer and optional unit (example: 10M is 10*1024*1024).  Units
are K, M, G, T, P, E, Z, Y (powers of 1024) or KB, MB, ... (powers of 1000).
CHUNKS may be:
N      split into N files based on size of input
K/N    output Kth of N to stdout
l/N    split into N files without splitting lines
l/K/N  output Kth of N to stdout without splitting lines
r/N    like 'l' but use round robin distribution
r/K/N  likewise but only output Kth of N to stdout
GNU coreutils online help: </software/coreutils/>
请向</team/zh_CN.html> 报告split 的翻译错误
要获取完整⽂档,请运⾏:info coreutils 'split invocation'
<-split 版本
[root@agent ~]# split --version
split (GNU coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.
许可证:GPLv3+:GNU 通⽤公共许可证第3 版或更新版本</licenses/gpl.html>。
本软件是⾃由软件:您可以⾃由修改和重新发布它。
在法律范围内没有其他保证。
由Torbj?rn Granlund 和Richard M. Stallman 编写。
--> 根据⾏拆分 <--
每 3 ⾏拆分为⼀个⽂件,然后拆分后的⽂件以hello 为前缀,以数字为后缀长度为 1.
[root@server test]# cat test
a
d
g
g
h
n
u
7
c
r
f
v
v
[root@server test]# split -l 3 test -d -a 1 hello
[root@server test]# ll
总⽤量 24
-rw-r--r-- 1 root root  6 8⽉  8 08:50 hello0
-rw-r--r-- 1 root root  6 8⽉  8 08:50 hello1
-
rw-r--r-- 1 root root  6 8⽉  8 08:50 hello2
-rw-r--r-- 1 root root  5 8⽉  8 08:50 hello3
-rw-r--r-- 1 root root  4 8⽉  8 08:50 hello4
-rw-r--r-- 1 root root 27 8⽉  8 08:49 test
--> 按字节进⾏拆分 <--
每三个字节拆分成⼀个⽂件,默认不加单位就是字节,也可以带单位⽐如KB,MB等.
[root@server test]# du -sh test
4.0K test
[root@server test]# split -b 5 test -d -a 2 zijie
[root@server test]# ll
总⽤量 28
-
rw-r--r-- 1 root root 27 8⽉  8 08:49 test
-rw-r--r-- 1 root root  5 8⽉  8 08:57 zijie00
-rw-r--r-- 1 root root  5 8⽉  8 08:57 zijie01
-rw-r--r-- 1 root root  5 8⽉  8 08:57 zijie02
-rw-r--r-- 1 root root  5 8⽉  8 08:57 zijie03
-rw-r--r-- 1 root root  5 8⽉  8 08:57 zijie04
-rw-r--r-- 1 root root  2 8⽉  8 08:57 zijie05
--> 按KB,MB 进⾏分割 -->
<-- ⽣成⼀个⼤⼩为 10M 的测试⽂件 -->
[root@server test]# dd if=/dev/zero bs=10M count=1 of=tenfile
记录了1+0 的读⼊
记录了1+0 的写出
10485760字节(10 MB)已复制,0.0205317 秒,511 MB/秒
将⽂件 tenfile 分割成⼤⼩为2M的⼩⽂件
[root@server test]# du -sh tenfile
10M tenfile
[root@server test]# split -b 2M tenfile | du -sh xa*
2.0M xaa
2.0M xab
2.0M xac
2.0M xad
2.0M xae
可以看到⽂件被分割成多个带有字母的后缀⽂件.
如果想⽤数字后缀可使⽤ -d 参数,同时可以使⽤ -a length来指定后缀的长度
[root@server test]# du -sh tenfile
10M tenfile
[root@server test]# split -b 5M tenfile -d -a 3
[root@server test]# ll
总⽤量 20480
-rw-r--r-- 1 root root 10485760 8⽉  8 09:03 tenfile
-rw-r--r-- 1 root root  5242880 8⽉  8 09:11 x000
-rw-r--r-- 1 root root  5242880 8⽉  8 09:11 x001
为分割后的⽂件指定⽂件名的前缀.
[root@server test]# du -sh tenfile
10M tenfile
[root@server test]# split -b 4M tenfile -d -a 2 test
[root@server test]# ll
总⽤量 20480
-rw-r--r-- 1 root root 10485760 8⽉  8 09:03 tenfilelinux退出文件命令
-rw-r--r-- 1 root root  4194304 8⽉  8 09:13 test00
-rw-r--r-- 1 root root  4194304 8⽉  8 09:13 test01
-rw-r--r-- 1 root root  2097152 8⽉  8 09:13 test02
--> 将split分割的⽂件合并成⼀个并校验完整性<--
[root@server test]# split -d -6 passwd -a 1 a
[root@server test]# ll
总⽤量 24
-rw-r--r-- 1 root root  215 8⽉  8 09:23 a0
-rw-r--r-- 1 root root  260 8⽉  8 09:23 a1
-rw-r--r-- 1 root root  313 8⽉  8 09:23 a2
-rw-r--r-- 1 root root  285 8⽉  8 09:23 a3
-rw-r--r-- 1 root root  142 8⽉  8 09:23 a4
-rw-r--r-- 1 root root 1215 8⽉  8 09:22 passwd
[root@server test]# cat a* >> b
[root@server test]# ls
a0  a1  a2  a3  a4  b  passwd
[root@server test]# md5sum passwd
de298f292f5e9d8d25ee00fbac7e63b2  passwd
[root@server test]# md5sum b
de298f292f5e9d8d25ee00fbac7e63b2  b

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。