一种常见的需求是,有一个比较大的文件,需要把它切割成比较小的几个文件,在Linux系统中你就可以使用Split命令了。Split命令可以将一个大的文件按照文件大小或者行数切割成小文件。Split命令的使用方式如下:

plit [-bl] file PREFIX
选项与参数:
-b :后面可接欲分割成的文件大小,可加单位,例如 b, k, m 等;
-l :以行数来进行分割。
PREFIX :代表前导符的意思,可作为分割文件的前导文字。

  范例一:我的 /etc/termcap 有七百多K,若想要分成 300K 一个文件时?

[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 等方式来创建小文件的!
  范例二:如何将上面的三个小文件合成一个文件,档名为 termcapback

[root@www tmp]# cat termcap* >termcapback

  使用cat命令,将数据流重定向就可以了。
  范例三:使用 ls -al / 输出的信息中,每十行记录成一个文件

[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可以利用减号 "-" 来替代, 举例来说:

[root@www ~]# tar -cvf - /home | tar -xvf -

  注意在上面的例子使用到了'>','>'会将数据流传送给文件或者设备,因此可以使用>将命令输出写入到文件或者设备。当然写入到设备后就无法继续利用这个数据流。如果需要继续使用这个数据流可以使用tee命令对流进行双向重定向。tee命令的示意图如下所示:

  tee 会同时将数据流分送到文件去与屏幕 (screen);而输出到屏幕的,其实就是 stdout ,可以继续处理。

tee [-a] file
选项与参数:
-a :以累加 (append) 的方式,将数据加入 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 转存一份到文件内并将同样的数据继续送到屏幕去处理! 这样除了可以让我们同时分析一份数据并记录下来之外,还可以作为处理一份数据的中间缓存盘记录之用!

每天学点Linux-切割命令split的更多相关文章

  1. Linux基础命令---split

    split 将一个大文件切割成较小的文件,默认情况下每1000行就会切割一次.分割后的文件,默认以xaa.xab.xac等命名.用户亦可以指定名字的前缀,例如指定前缀test,那么分割后的文件是tes ...

  2. linux 管道命令 小记

    管道命令(pipe) 使用“|”界定符号 管道命令必须能够接收来自前一个命令的数据成为standard input才能继续处理 1.选取命令:cut, grep.分析数据,取出我们想要的. -cut ...

  3. linux切割文件【split命令详解】

    linux查看帮助 [tomcat-nohup]$ split --help 用法:split [选项]... [输入 [前缀]] 将输入内容拆分为固定大小的分片并输出到"前缀aa" ...

  4. Linux必学的60个命令

    inux必学的60个命令Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在Linux系统上工作离不开使用系统提供的命令.要想 ...

  5. 教老婆学Linux运维(二)Linux常用命令指南【上】

    目录 教老婆学Linux(二)Linux常用命令指南[上] 一.概述 二.常用命令 教老婆学Linux(二)Linux常用命令指南[上] 作者:姚毛毛的博客 tips:文章太长,分两篇发出,本篇发前三 ...

  6. Linux必学的60个命令【转载】

    Linux提供了大量的命令,利用它可以有效地完成大量的工 作,如磁盘操作.文件存  [转载地址]http://blog.chinaunix.net/uid-16728139-id-3154272.ht ...

  7. Linux下使用split按行数进行切割

    说明:一般来说split按行数切割多数用在日志文件上. 实例: 将一个大文件分成若干个小文件方法: 例如将一个BLM.txt文件分成前缀为BLM_ 的1000个小文件,后缀为系数形式,且后缀为4位数字 ...

  8. 教老婆学Linux运维(二)Linux常用命令指南【下】

    目录 tips:紧接上一篇,Linux常用命令指南[上] 2.4 文件解压缩 2.4.1 官宣的linux压缩工具:tar tar的基本命令格式为 tar [参数选项] [文件或目录] 我们前面学的命 ...

  9. 尚学linux课程---7、linux系统管理命令

    尚学linux课程---7.linux系统管理命令 一.总结 一句话总结: 查网络:netstat -ntpl 查进程:ps 1.需要下载163yum源(从外部源同步仓库)里面的所有rpm文件? re ...

随机推荐

  1. 主机ssh升级到6.7以上版本后,使用jsch jar包ssh连接不上报Algorithm negotiation fail问题的解决办法

    ssh连接问题是由于主机ssh中缺少与jsch jar包匹配的加密算法导致,jsch jar包的默认加密算法貌似是diffie-hellman-group-exchange-sha1. 在目标主机ss ...

  2. React Native升级目标SDK

    React Native升级目标SDK 打开在 android/app/的build.gradle 找到 android { } 区块 改变以下属性 compileSdkVersion 26 buil ...

  3. [CF528D]Fuzzy Seach

    Description: 有两个基因串S和T,他们只包含AGCT四种字符.现在你要找出T在S中出现了几次. 有一个门限值k≥0.T在S的第i(1≤i≤|S|-|T|+1)个位置中出现的条件如下:把T的 ...

  4. 从零开始搭建一个从Win7环境备份至CentOS7的SVN双机备份环境

    ★几个关键的事项★ 需要关闭防火墙filewalld跟selinux ,在root用户下操作: [root@localhost svnRepos]# systemctl stop firewalld ...

  5. 2017.07.06【NOIP提高组】模拟赛B组

    Summary 今天比赛感觉题目很奇葩,都可以用许多简单方法来做,正确性都显然,当然也有点水,也就是说是考我们的数感和数学知识,而程序,只是代码的体现. 这次的时间安排感觉不错,因为很快就打完最后一道 ...

  6. 深入理解JVM(4)——对象内存的分配策略

    一.Java所承担的自动内存管理主要是针对对象内存的分配和回收. 二.在Java虚拟机的五块内存空间中,程序计数器.Java虚拟机栈.本地方法栈内存的分配和回收都具有确定性,一般在编译阶段就能确定需要 ...

  7. Helm: Error: no available release name found

    如题,helm报这个错误 Helm: Error: no available release name found 错误的原因大概是因为 tiller没有正确的角色权限. 执行以下命令可解决这个问题. ...

  8. Git_git diff 与 git diff -- cached 区别

    1.首先,打开一个干净的工作区 2.对文件进行修改 3.使用 git diff  进行查看(这里的解释可能不是很准确,暂时这么理解!) 4. 执行 git add 将工作区中的内容add到stage, ...

  9. Git 和 Repo常用命令

    这篇博客总结的也不错: git常用及进阶命令总结 Git与Repo入门 一.初始環境配置 git config --global user.name "John Doe"git c ...

  10. Office365 OneDrive Geo Move

    Issue Description: 1. Connect to SPO Service. 2. Validate SPO Service OneDrive Geo move compatibilit ...