一种常见的需求是,有一个比较大的文件,须要把它切割成比较小的几个文件,在Linux系统中你就可使用Split命令了。Split命令能够将一个大的文件按照文件大小或者行数切割成小文件。Split命令的使用方式以下:缓存
plit [-bl] file PREFIX 选项与参数: -b :后面可接欲分割成的文件大小,可加单位,例如 b, k, m 等; -l :以行数来进行分割。 PREFIX :表明前导符的意思,可做为分割文件的前导文字。
范例一:个人 /etc/termcap 有七百多K,若想要分红 300K 一个文件时?app
[root@www ~]# cd /tmp; split -b 300k /etc/termcap termcap [root@www tmp]# ll -k termcap* -rw-r--r-- 1 root root 300 Feb 7 16:39 termcapaa -rw-r--r-- 1 root root 300 Feb 7 16:39 termcapab -rw-r--r-- 1 root root 189 Feb 7 16:39 termcapac
如上所示,分割后的文件以 xxxaa, xxxab, xxxac 等方式来建立小文件的!
范例二:如何将上面的三个小文件合成一个文件,档名为 termcapbackspa
[root@www tmp]# cat termcap* >termcapback
使用cat命令,将数据流重定向就能够了。
范例三:使用 ls -al / 输出的信息中,每十行记录成一个文件blog
[root@www tmp]# ls -al / | split -l 10 - lsroot [root@www tmp]# wc -l lsroot* 10 lsrootaa 10 lsrootab 6 lsrootac 26 total
注意:在管道命令当中,经常会使用到前一个命令的 stdout做为此次的stdin , 某些命令须要用到文件名 (例如 tar) 来进行处理时,该stdin与stdout能够利用减号 "-" 来替代, 举例来讲:it
[root@www ~]# tar -cvf - /home | tar -xvf -
注意在上面的例子使用到了'>','>'会将数据流传送给文件或者设备,所以可使用>将命令输出写入到文件或者设备。固然写入到设备后就没法继续利用这个数据流。若是须要继续使用这个数据流可使用tee命令对流进行双向重定向。tee命令的示意图以下所示:ast
tee 会同时将数据流分送到文件去与屏幕 (screen);而输出到屏幕的,其实就是 stdout ,能够继续处理。class
tee [-a] file 选项与参数: -a :以累加 (append) 的方式,将数据加入 file 当中!
具体使用以下所示:file
[root@www ~]# last | tee last.list | cut -d " " -f1 # 这个范例可让咱们将 last 的输出存一份到 last.list 文件中; [root@www ~]# ls -l /home | tee ~/homefile | more # 这个范例则是将 ls 的数据存一份到 ~/homefile ,同时屏幕也有输出信息! [root@www ~]# ls -l / | tee -a ~/homefile | more # 要注意! tee 后接的文件会被覆盖,若加上 -a 这个选项则能将信息累加。
tee 可让 standard output 转存一份到文件内并将一样的数据继续送到屏幕去处理! 这样除了可让咱们同时分析一份数据并记录下来以外,还能够做为处理一份数据的中间缓存盘记录之用!im