查看“SplitHowTo”的源代码
来自Ubuntu中文
←
SplitHowTo
跳到导航
跳到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
作者:北南南北<br> 来自:LinuxSir.Org<br> 摘要:文件的切分工具split和文件的结合工具cat,是我们偶尔用到的工具。初学的弟兄可能需要了解一下,有时我们在系统管理中还是需要的;<br> ++++++++++++++++++++++++++++++++++++++ 正文: ++++++++++++++++++++++++++++++++++++++ == 1、文件的切分及结合工具; == 可能我们遇到这种情况,有时文件比较大,想上传到服务器上,但由于服务器管理员为了安全考虑,把上传空间作了限制,比如只能上传20M的文件,如果我们文件的体积在100M的,有时就是压缩也不能满足服务器上传的限制。这时我们就要考虑切分文件了,把100M的文件,切分成若干份,然后传到服务器上。切分后的每个文件都是原文件的组成部份。如果要获得整个完整的文件,我们就需要文件的结合工具。 所以我们引入了文件切分工具split和csplit,文件的结合工具cat; == 2、文件的切分工具 split 和csplit; == split 是把一个文件拆分为长度或体积相等的若干文件的工具; === 2.1 split 工具; === split 是把一个文件拆分为长度或体积相等的若干文件的工具; ==== 2.11 语法格式; ==== 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 帮助; ==== 2.12 split实例应用; ==== 实例一:比如我们想切分一个文件linuxdoc.txt,切分后,每两行存为一个新文件。 <pre><nowiki> [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</nowiki></pre> 实例二:以文件体积为单位的切分; <pre><nowiki> [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</nowiki></pre> 对于切分体积的说明:如果没有指定单位,默认单位是B。还有其它的单位,比如b、k、m。看下面的例子; <pre><nowiki> [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;</nowiki></pre> 实例三:从标准输入读取的实例; <pre><nowiki> [root@localhost ~]# ls -lh /etc | split -l 40 - etcfilelist [root@localhost ~]# ls etcfilelista* etcfilelistaa etcfilelistab etcfilelistac etcfilelistad etcfilelistae etcfilelistaf etcfilelistag</nowiki></pre> 注:本指令的意思是用ls以长格式列出/etc目录的文件(不包括.file格式的文件,也就是隐藏文件),把输入的内容传递给 split,让split来切分每40行为存为一个文件,文件名的开头以etcfilelist开始。注意40后面的- ,表示从标准输入读取,在这里就表示键盘输入了,也就是读取ls -lh /etc 指令的内容。然后split切分。 === 2.2 csplit 工具; === 正在补充之中... ... == 3、文件的连接工具 cat; == cat 工具如果后面直接文件文件名,就可以查看文件的内容。我们在《文件内容查看工具》中有说过。在《文件内容查看工具》一文中,我们也谈过cat 连接文件的功能;现在我们仍得把cat工具连接文件的功能单列出来说一说。 === 3.1 把多个文件合并到一个新的文件中; === 命令格式如下: cat file1 file2 file3 ... ... > filen 我们可以把file1、file2、file3 等多个文件合并到一个文件中,其中filen是在合并这些文件的同时新建的文件,而不是已存在的文件; <pre><nowiki> [root@localhost ~]# cat sir01.txt 123456 [root@localhost ~]# cat sir02.txt 56789 [root@localhost ~]# cat sir03.txt 09876 [root@localhost ~]# cat sir01.txt sir02.txt sir03.txt > sir04.txt [root@localhost ~]# more sir04.txt 123456 56789 09876</nowiki></pre> === 3.2 把多个文件合并追加到一个已存在的文件中; === 命令格式如下: cat file1 file2 file3 ... ... >> filen 如果我们想把file1、file2、file3等多个文件内容连接起来,并追加到一个已存在的文件filen中,应该用追加的方法; <pre><nowiki> [root@localhost ~]# more sir01.txt 123456 [root@localhost ~]# cat sir01.txt 123456 [root@localhost ~]# cat sir02.txt 56789 [root@localhost ~]# cat sir03.txt 09876 [root@localhost ~]# cat sir05.txt aaaaa bbbbb [root@localhost ~]# cat sir01.txt sir02.txt sir03.txt >> sir05.txt [root@localhost ~]# cat sir05.txt aaaaa bbbbb 123456 56789 09876</nowiki></pre> == 4、关于分拆文件和连接文件的安全性; == 比如我们把一个大的文件分拆为多个小文件时,肯定会考虑到,我们重新把一个一个小的分拆文件连接起来,会不会能和原文件保持一致。这样的疑问其实也是有道理的,因为这关系到一个文件的完整性,如果真的合并不到一起,关系到文件的完整性和安全性。这时就涉及到文件的校验工具。一般我们是通过MD5工具来校验对比。在Linux也有这样的工具md5sum。 <pre><nowiki> [root@localhost ~]# ls -lh myfile.img 注:查看myfile.img文件属性; -rw-r--r-- 1 root root 7.9M 04-27 20:35 myfile.img [root@localhost ~]# split -b 4m myfile.img myfileSp 注:分拆为大小为4M的文件; [root@localhost ~]# ls -lh myfileSp* 注:列出分拆文件,我们看到有两个文件; -rw-r--r-- 1 root root 4.0M 04-27 20:37 myfileSpaa -rw-r--r-- 1 root root 3.9M 04-27 20:37 myfileSpab [root@localhost ~]# cat myfileSp* > newmyfile.img 注:我们尝试合并文件到一个新文件中; [root@localhost ~]# ls -lh newmyfile.img -rw-r--r-- 1 root root 7.9M 04-27 20:38 newmyfile.img [root@localhost ~]# md5sum newmyfile.img myfile.img 注:我们对比合并后文件和原文件的MD5值,如果M55值相同,就是完整的; [root@localhost ~]# md5sum newmyfile.img myfile.img 7eb24d865a14fa3227633816800522c1 myfile.img 7eb24d865a14fa3227633816800522c1 newmyfile.img</nowiki></pre> 上面是一个实例,把myfile.img文件分拆为4M大小的文件,然后再把两个文件连接起来,然后校验是不是合并后的文件和原文件的MD5值是相同的,如果相同,证明分拆过程是安全的。 == 5、关于本文; == 文件的切分工具和结合工具只是介绍性的,用法也相对简单。我们知道有这两个工具就行了,用的时候查man和help就OK。没有必要象我这样大动干戈写文档,弄的好像写长篇小说似的。如果我真的能当作家,对我来说可是极大的荣耀~~~ == 6、后记; == 关于目录和文件管理的文档写了有一些了,我想为这些文档写个归类文档,这样新手查看就容易一点。另外感觉应该写一下字符模式下的文本编辑工具的简单用法,比如vi或nano之类的。这新手面对黑黑的屏幕就不会不知所措了~~~ == 7、参考文档; == man 和help ;
返回
SplitHowTo
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
登录
导航
首页
最近更改
随机页面
页面分类
帮助
搜索
编辑
编辑指南
沙盒
新闻动态
字词处理
工具
链入页面
相关更改
特殊页面
页面信息