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

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

合久必分

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

[root@roclinux ~]$ dd if=/dev/zero bs=1024 count=700000 of=king_of_ring.avi

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 ~]$ split -b 400M king_of_ring.avi

[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 ~]$ cat xaa xab > king_of_ring_merge.avi

[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_

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

[root@roclinux ~]$ ls -l king*

-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

[root@roclinux ~]$ ls -l king*

-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_

#可以看到拆分成功

[root@roclinux ~]$ wc -l my_passwd_*

10 my_passwd_00

10 my_passwd_01

5 my_passwd_02

25 total

合并后的校验不可少

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

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

#对原先的文件计算md5值

[root@roclinux ~]$ md5sum king_of_ring.avi

eacff27bf2db99c7301383b7d8c1c07c king_of_ring.avi

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

[root@roclinux ~]$ md5sum king_of_ring_merge.avi

eacff27bf2db99c7301383b7d8c1c07c king_of_ring_merge.avi

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

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

linux split到指定目录,split命令_Linux split命令:切割(拆分)文件相关推荐

  1. checksum linux 命令_linux常用命令总结

    一.find命令 作用:查找文件 [root@server ~]# find / -name elasticsearch /var/log/elasticsearch /var/run/elastic ...

  2. linux解压gz.gz文件,linux解压tar.gz并重命名_linux解压tar.gz文件

    原标题:linux解压tar.gz并重命名_linux解压tar.gz文件 命名为jpg.tar.gz tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.t ...

  3. tar -zxvf命令_Linux压缩命令小记

    1)对于.tar结尾的文件 tar -xf all.tar 2)对于.gz结尾的文件 gzip -d all.gz gunzip all.gz 3)对于.tgz或.tar.gz结尾的文件 tar -x ...

  4. 打印 指定目录下和子目录下的的所有.java文件的路径. (使用FileFilter过滤器)

    1 package test; 2 /* 3 * 打印 指定目录下和子目录下的的所有.java文件的路径. 4 * */ 5 import java.io.*; 6 import java.util. ...

  5. linux按照大小分割文件夹,split命令_Linux split 命令用法详解:分割任意大小的文件...

    split命令可以将一个大文件分割成很多个小文件,有时需要将文件分割成更小的片段,比如为提高可读性,生成日志等. 选项-b:值为每一输出档案的大小,单位为 byte. -C:每一输出档中,单行的最大 ...

  6. linux创建ftp指定目录命令行,Linux-命令行建立FTP

    虽然有宝塔,有可道云,但是使用命令行建立的FTP还是必须要搞的,比较宝塔和可道云是别人的 FTP服务器简介: 各类的操作系统之间的文件交流问题,需要建立一个统一的文件传输协议,即FTP(File Tr ...

  7. split命令--linux切割(拆分)文件

    split 可以将一个大文件分割成多个小文件,有时候需要将问卷分割成更小的片段,比如提高可读性,生成日志. 语法Usage: split [OPTION]... [INPUT [PREFIX]]Out ...

  8. Windows 系统下通过命令将本地文件上传至远程 Linux 主机的指定目录下

    这里是借助文件传输客户端 putty 的命令来上传文件. 第一步:下载安装 putty 第二步:通过命令终端进入 putty 的主目录下,即进入 D:\puggy 目录下,该目录下含有多个可执行文件( ...

  9. linux 安装mysql 指定目录_Linux在线安装mysql5.7到指定目录

    目标: 1.自定义mysql安装目录 2.自定义mysql数据目录 3.正确安装并启动mysql 4.输入密码正确登录 说明: 本文mysql下载目录 /usr/download 本文mysql安装目 ...

最新文章

  1. 意想不到的有趣linux命令
  2. java sql函数_Java调用Sql存储过程实例讲解
  3. 小程序真机测试错误代码_测试不充分:知道您的代码是否真的可以投入生产的5种方法...
  4. 《黃帝內經 —— 央視60集紀錄片》
  5. Linux——线程使用及互斥量
  6. Effective C++:条款37:绝不又一次定义继承而来的缺省參数值
  7. jpGraph学习——绘制3D饼形图
  8. rpg模拟器汉化android版,nekorpg模拟器
  9. 矩阵的转置matlab,矩阵的转置表示 matlab中矩阵的转置怎么表示
  10. 微信支付测试商户号开发必备(有效的)
  11. es mapping 设置
  12. 怎么分割视频,将视频自定义分割成多个小片段的方法
  13. 远程桌面连接(远程控制另一电脑)的详细步骤
  14. 苹果cms修改服务器,购买m1938工作室制作的苹果cms模板如何安装修改苹果cms页面说明...
  15. 林语堂:《醒觉·对人生的态度》
  16. ora2pg 导出Oracle数据
  17. C#汽车租凭(面对对象(封装、继承,多态的应用))
  18. 知云文献翻译打不开_推荐一款文献翻译软件,免费又高效的那种
  19. dormer natalie_【图片】[Natalie Dormer]娜塔莉·多默尔【娜塔莉多默尔吧】_百度贴吧...
  20. 计算机怎么c盘一键还原,电脑怎么一键还原的操作方法详解

热门文章

  1. 某网站提供的香港空间,美国空间,国内空间测速结果
  2. 第三章程序的机器级表示 学习报告
  3. Stream流的一些骚操作
  4. 《软件定义车辆的风险评估和开发成本优化》 论文学习笔记
  5. Rabin-Karp
  6. 《第一行代码》第三版之探究Fragment(六)
  7. k8s之PV以及PVC
  8. Unity-URP 实现遮挡高亮
  9. 24.shell中list详解,定义list,获取List的总个数,获取list的某个元素值,将list的每个元素转换成以空格分隔的字符串,空格分隔的字符串转换成list,for循环list
  10. DHU OJ 27 约瑟夫环