15 分钟之后,我要去朋友家聚会。我打算从我的台式机上把一部 700MB 大小的美国大片拷贝出来,带到朋友家去看,可是我的两个优盘都只有 512MB,这让我如何是好?

别急,用 10 分钟赶快来认识一下我们的 split 拆分小能手,一切问题将迎刃而解。当遇到大文件而苦不堪言的时候,split 就会像天使一样解救我们于水火之中。

合久必分

闲言少叙,我们现在就来介绍拆分的方法。先使用 dd 命令来生成一个 700MB 文件来作为我们的拆分对象:

700000+0 records in

700000+0 records out

716800000 bytes (717 MB) copied, 12.9189 s, 55.5 MB/s

[root@roclinux ~]$ ls -l king_of_ring.avi

-rw-r--r-- 1 root root 716800000 Apr 12 13:01 king_of_ring.avi

美国大片的文件大小是 700MB,而我手边仅有的两个优盘,都是 512MB 大小的。我打算把文件以 400MB 作为一个拆分单位,来进行拆分。这里使用到了 split 的-b选项,来指定每个拆分文件的大小:

[root@roclinux ~]$ ls -l

total 1400008

-rw-r--r-- 1 root root 716800000 Apr 12 13:01 king_of_ring.avi

-rw-r--r-- 1 root root 419430400 Apr 12 13:04 xaa

-rw-r--r-- 1 root root 297369600 Apr 12 13:04 xab

看!分身完毕!咦,怎么多出了 xaa 和 xab 两个文件,这么奇怪的名字?

是的,你没看错,在没有明确指定拆分后文件的命名方式的情况下,split 会默认采用 x 字符作为文件前缀,采用类似 aa、ab、ac 的字符串依次作为文件后缀。于是,就出现了我们上面看到的 xaa、xab 了。

从文件大小来看,如我们所愿,电影文件的确被切割成了一个 400MB 的文件、一个 300MB 的文件,终于可以装到两个优盘里了。

知其然,知其所以然

知道了拆分命令后,我们来一起学习一下 split 的命令格式和常用选项。

split 的作用很好描述,就是将文件按照一定规则进行拆分。一般情况下,我们可以按照文件大小来进行拆分,如果是文本文件的话,还可以按照行数来进行拆分,默认是 1000 行作为一个拆分单位。

默认情况下,分割后的文件的名称会以 x 作为前缀,以 aa、ab、ac 这样的双字母格式作为后缀,形成 xaa、xab 这样的名称格式。

我们来一起看看 split 的命令格式:

split [-b ][-C ][-][-l ][要切割的文件][输出文件名前缀][-a ]

最常用的选项,都在这里了:

-b:指定按多少字节进行拆分,也可以指定 K、M、G、T 等单位。

-或-l:指定每多少行要拆分成一个文件。

输出文件名前缀:设置拆分后的文件的名称前缀,split 会自动在前缀后加上编号,默认从 aa 开始。

-a:默认的后缀长度是 2,也就是按 aa、ab、ac 这样的格式依次编号。

分久必合

完成了美国大片的拆分,我赶赴朋友家,打开他的电脑,优盘插上,使用 cat 命令将拆分文件 xaa 和 xab 合并成一个文件,可以看出合并后的文件和源文件的大小是一致的:

[root@roclinux ~]$ ls -l

total 2100012

-rw-r--r-- 1 root root 716800000 Apr 12 13:01 king_of_ring.avi

-rw-r--r-- 1 root root 716800000 Apr 12 13:07 king_of_ring_merge.avi

-rw-r--r-- 1 root root 419430400 Apr 12 13:04 xaa

-rw-r--r-- 1 root root 297369600 Apr 12 13:04 xab

对了,如果是在 Windows 下的话,我们要先运行 cmd,然后用 copy 命令来进行文件的合并:

copy /b xaa + xab king_of_ring.avi

格式上和 Linux 有些区别,但原理是一样的。

设置拆分文件的名称前缀

上面例子中,我们没有指定拆分文件的名称前缀,结果拆分后的文件名都是 aa、ab 这样的名称,这样的名称既不达意也不美观。

下面的例子,我们尝试以 king_of_ring_part_ 作为拆分后文件的名称前缀:

我们指定了king_of_ring_part_前缀

[root@roclinux ~]$ split -b 400m king_of_ring.avi king_of_ring_part_

可以看到, 文件名的可读性提高了很多

-rw-r--r-- 1 root root 716800000 Feb 25 18:29 king_of_ring.avi

-rw-r--r-- 1 root root 419430400 Feb 25 19:24 king_of_ring_part_aa

-rw-r--r-- 1 root root 297369600 Feb 25 19:24 king_of_ring_part_ab

文件名的可读性是不是提高了不少,从文件名称就可以看出来是美国大片的拆分文件啦。

设置数字后缀

如果大家看不惯以 aa、ab 这种字母作为文件后缀,我们还可以通过-d选项来指定数字形式的文件后缀:

使用了-d选项

[root@roclinux ~]$ split -b 400m -d king_of_ring.avi king_of_ring_part_

后缀从原来的aa、ab变成了00、01

-rw-r--r-- 1 root root 716800000 Feb 25 18:29 king_of_ring.avi

-rw-r--r-- 1 root root 419430400 Feb 25 19:24 king_of_ring_part_00

-rw-r--r-- 1 root root 297369600 Feb 25 19:24 king_of_ring_part_01

对于中国人来说,数字形式的后缀,增加了文件名称的可读性。

按照行数进行拆分

前面我们讲的是按照文件大小(如 400MB)进行文件拆分的方法,但是并非所有情况都适合于用文件大小作为拆分单元。比如,我们希望把 /etc/passwd 文件按照一个文件 10 行记录的方式进行拆分,又该怎么操作呢?

使用-N来指定拆分的行数,本例中为-10

[root@roclinux ~]$ split -d -10 /etc/passwd my_passwd_

可以看到拆分成功

10 my_passwd_00

10 my_passwd_01

5 my_passwd_02

25 total

合并后的校验不可少

需要注意的是,在通过网络来传输大文件,或者在设备之间复制大文件的时候,可能会出现传输前后数据不一致的情况。

使用 split 来拆分大文件仅仅是故事的开始,操作完毕后化零为整、完璧归赵才是完美的结局。因此需要在合并文件后进行文件的完整性校验,推荐使用 md5sum 来计算和比对前后两个大文件的 md5 值。

对原先的文件计算md5值

eacff27bf2db99c7301383b7d8c1c07c king_of_ring.avi

对合并后的文件计算md5值, 并与原值进行比较

eacff27bf2db99c7301383b7d8c1c07c king_of_ring_merge.avi

如果前后一致,那么恭喜你,文件合并成功!

好了,split 学完了,我们也可以和朋友一起欣赏惊险刺激的美国大片了!

linux拆分文件会影响源文件吗,linux split拆分文件相关推荐

  1. linux pcs 所有命令,BaiduPCS-Go Windows或linux下百度网盘cmd命令行详细使用方法

    BaiduPCS-Go是用go语言编写的仿 Linux shell 文件处理命令的百度网盘命令行客户端,支持多平台使用包括: Windows, macOS, linux, 移动设备等,同时,支持百度帐 ...

  2. 痞子衡嵌入式:ARM Cortex-M文件那些事(4)- 可重定向文件(.o/.a)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是嵌入式开发里的relocatable文件(object, library). 前三节课里,痞子衡都是在给大家介绍嵌入式开发中的input文 ...

  3. python文件 py、pyc、pyo、pyd文件

    py是源文件, pyc是源文件编译后的文件 pyo是源文件优化编译后的文件 pyd是其他语言写的python库 先把源码py文件编译成pyc或者pyo,然后由python的虚拟机执行,相对于py文件来 ...

  4. Linux基础.umask,权限影响,文件类型,/根目录文件,环境变量,alias别名,man手册

    一. 为什么文件的起始权限都是664,目录都是775? 文件: 默认创建没有执行权限 目录: 默认有执行权限 --> 因为目录没有没有执行权限,就不能切换到目录中 -rw-rw-r-- 1 ge ...

  5. 安装linux可是c盘文件夹失败,虚拟机安装linux系统,会对物理的磁盘有影响吗?怎样保证安全,谢了!...

    匿名用户 1级 2017-11-10 回答 个人硬盘安装SUSE10.1DVD版方法--zt 作者:nanzhao@Linuxfans.org 从刚接触LINUX 上网找安装方面的资料 到自己成功安装 ...

  6. linux 软连接 sudo ln -s 源文件 目标文件

    1.软链接就是:"ln –s 源文件 目标文件",只会在选定的位置上生成一个文件的镜像,不会占用磁盘空间,类似与windows的快捷方式. 2.硬链接ln源文件目标文件,没有参数- ...

  7. 文件节点的linux指令,Java工程师必学的Linux命令(一)文件与目录管理

    从本篇文章开始,我将总结一些Java工程师日常研发工作中会使用到的Linux命令,在介绍这些命令的过程中,也会对Linux系统的一些基础知识进行普及.希望对大家工作和学习有所帮助吧. 本篇将从文件与目 ...

  8. linux文件一列加1,Linux命令(1)-创建文件

    版本:centos7 1.可以使用cat创建一个新的文件 命令:cat>>filename 使用cat创建文件时,以系统默认的文件属性作为新文件的属性,并接受键盘输入作为文件的内容.输入结 ...

  9. linux的文件link占用空间的差别,Linux重要知识点汇总——磁盘与文件系统管理

    EXT2文件系统: 文件系统特性: 格式化(format):每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区格式化,以成为操作系统能够你用的文件系统格式 通常我 ...

  10. linux拷贝到新建文件夹命令行,Linux创建文件touch,复制文件cp,tab补全,链接文件ln命令...

    一.创建文件 使用touch 可以创建空文件,例如opt目录下创建test2.txt文件.这种一般是有些程序必须要先创建文件,才能使用. 二. 复制文件 2.1 使用cp命令来复制文件,需要两个参数- ...

最新文章

  1. java 创建 HMAC 签名
  2. 毕设开发日志2017-11-03
  3. 赛题解析 | 初赛赛道一:实现一个分布式统计和过滤的链路追踪
  4. 解决Can 't connect to local MySQL server throug
  5. LeetCode 1652. 拆炸弹(前缀和)
  6. 用递归将嵌套的JSON对象遍历出来,转为二维数组
  7. A. Raising Bacteria
  8. 一起谈.NET技术,浅析五大ASP.NET数据控件
  9. 从马克思看计算机科学,从马克思主义的角度,用科学精神来看生死观,应该说已经解决,或...
  10. 清华大学范玉顺互联网与大数据_互联网+时代的互联网思维与大数据思维
  11. 2023年西北工业大学材料科学与工程考研考情与难度、参考书及上岸前辈初复试备考经验指导
  12. win10下创建FTP站点
  13. 热更新应用--热补丁Hotfix学习笔记
  14. 炫龙T50热键功能键
  15. krpano使用示例
  16. java登录无线路由器_路由器的使用
  17. ubuntu18.04 安装Pangolin
  18. 安卓8.0-MT6763平台 st7701s-MIPI转RGB屏调试
  19. 安卓系统的电视机_盘点全球5大智能电视系统优缺点及各系统的功能和区别
  20. python输出假分数_解析ArcGis的标注(一)——先看看分数式、假分数式标注是怎样实现的...

热门文章

  1. Python中序列,列表,元组,字典及集合
  2. Educational Codeforces Round 45 (Rated for Div. 2)
  3. 第三百七十六节,Django+Xadmin打造上线标准的在线教育平台—创建用户操作app,在models.py文件生成5张表,用户咨询表、课程评论表、用户收藏表、用户消息表、用户学习表...
  4. Android学习笔记(十二)——使用意图传递数据的几种方式
  5. Eigen教程(4)
  6. 使用rsync无密码传输
  7. memcache使用方法测试 # 转自 简单--生活 #
  8. Mac text edit pdf reader
  9. python的参数传递机制
  10. c++比c快?一道字符串题目