技术开发 频道

文件的切分split和结合工具cat介绍

    【IT168 技术文档】

    文件的切分及结合工具

    可能我们遇到这种情况,有时文件比较大,想上传到服务器上,但由于服务器管理员为了安全考虑,把上传空间作了限制,比如只能上传20M的文件,如果我们文件的体积在100M的,有时就是压缩也不能满足服务器上传的限制。这时我们就要考虑切分文件了,把100M的文件,切分成若干份,然后传到服务器上。切分后的每个文件都是原文件的组成部份。如果要获得整个完整的文件,我们就需要文件的结合工具。 

    所以我们引入了文件切分工具split和csplit,文件的结合工具cat. 

    文件的切分工具 split 和csplit。

    split 是把一个文件拆分为长度或体积相等的若干文件的工具; 

    1.split 工具

    split 是把一个文件拆分为长度或体积相等的若干文件的工具

    1-1.语法格式

split [参数选项] infile [outfile]

    split 把输入的文件拆分为若干体积或长度相等的文件,输入文件保持不变,只是把结果拆分结果写到outfileaa、outfileab ... ... 等文件中。如果我们不指定outfile,被拆分后的文件会写到 xaa、xab ... ...。

    参数

-l n 把infile拆分为具有n行的段,默认值为1000 -b n[bkm] 以体积为单位的拆分,约定每拆分后每个文件的大小 ,b代表512B,k代表1KB,m代表1MB。 -C bytes[bkm] 把bytes的最大值放入文件,坚持增加完整的行; - 从标准输入读取; --help 帮助;

    1-2 split实例应用

    实例一:比如我们想切分一个文件linuxdoc.txt,切分后,每两行存为一个新文件。

[root@localhost ~]# more linuxdoc.txt 注:linuxdoc.txt 文件内容查看; 111111111 222222222 333333333 444444444 555555555 666666666 777777777 888888888 999999999 000000000 [root@localhost ~]# split -l 2 linuxdoc.txt linuxdocsp 注:切分linuxdoc.txt文件,被切分后的文件名linuxdocsp开头 [root@localhost ~]# ls linuxdocspa* 注:查看切分后的所有文件; linuxdocspaa linuxdocspab linuxdocspac linuxdocspad linuxdocspae [root@localhost ~]# more linuxdocspa* 注:查看这些文件的内容;是不是每个文件都是两行呢? linuxdocspaa :::::::::::::: 111111111 222222222 :::::::::::::: linuxdocspab :::::::::::::: 333333333 444444444 :::::::::::::: linuxdocspac :::::::::::::: 555555555 666666666 :::::::::::::: linuxdocspad :::::::::::::: 777777777 888888888 :::::::::::::: linuxdocspae :::::::::::::: 999999999 000000000

     实例二:以文件体积为单位的切分

[root@localhost ~]# ls -lh linuxdoc.txt -rw-r--r-- 1 root root 100 04-27 15:56 linuxdoc.txt [root@localhost ~]# more linuxdoc.txt 111111111 222222222 333333333 444444444 555555555 666666666 777777777 888888888 999999999 000000000 [root@localhost ~]# split -b 30 linuxdoc.txt linuxdocwsp 如果指定切分体积大小后面没有接单位,默认是B; [root@localhost ~]# ls -lh linuxdocwspa* -rw-r--r-- 1 root root 30 04-27 16:10 linuxdocwspaa -rw-r--r-- 1 root root 30 04-27 16:10 linuxdocwspab -rw-r--r-- 1 root root 30 04-27 16:10 linuxdocwspac -rw-r--r-- 1 root root 10 04-27 16:10 linuxdocwspad [root@localhost ~]# more linuxdocwspa* :::::::::::::: linuxdocwspaa :::::::::::::: 111111111 222222222 333333333 :::::::::::::: linuxdocwspab :::::::::::::: 444444444 555555555 666666666 :::::::::::::: linuxdocwspac :::::::::::::: 777777777 888888888 999999999 :::::::::::::: linuxdocwspad :::::::::::::: 000000000

    对于切分体积的说明:如果没有指定单位,默认单位是B。还有其它的单位,比如b、k、m。看下面的例子;

[root@localhost ~]# ls -lh moretool.txt -rw-r--r-- 1 root root 13K 04-27 16:17 moretool.txt 注:文件大小为13K; [root@localhost ~]#split -b 3k moretool.txt moretoolwsp 注: 切分后每个文件大小为3K;

    实例三:从标准输入读取的实例;

[root@localhost ~]# ls -lh /etc | split -l 40 - etcfilelist [root@localhost ~]# ls etcfilelista* etcfilelistaa etcfilelistab etcfilelistac etcfilelistad etcfilelistae etcfilelistaf etcfilelistag

    注:本指令的意思是用ls以长格式列出/etc目录的文件(不包括.file格式的文件,也就是隐藏文件),把输入的内容传递给split,让split来切分每40行为存为一个文件,文件名的开头以etcfilelist开始。注意40后面的- ,表示从标准输入读取,在这里就表示键盘输入了,也就是读取ls -lh /etc 指令的内容。然后split切分。

0
相关文章