百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

通过 11 个实例彻底掌握 Linux Split 命令

sinye56 2024-11-26 08:32 1 浏览 0 评论

split 命令在 Linux 和 UNIX 系统中用于将文件拆分或分解成小块。当我们使用 split 命令分割一个大文件时,输出文件的默认大小是 1000 行,默认前缀为 x。

在本文中,我们将分享 11 个有用的 split 命令示例。除此之外,我们还将讨论如何将分割的文件合并或重新组装成单个文件。

split 命令语法如下:

# split {options} {file_name} {prefix}

split 命令的一些重要选项如下所示:

(1) 将文件拆分为多个部分

将文件拆分为多个部分,示例如下:

[root@linuxtechi ~]# split tuxlap.txt
[root@linuxtechi ~]# ll
total 32
-rw-------. 1 root root  980 Aug 12 00:11 anaconda-ks.cfg
-rw-r--r--. 1 root root 9607 Nov 11 03:22 tuxlap.txt
-rw-r--r--. 1 root root 8744 Nov 11 03:23 xaa
-rw-r--r--. 1 root root  863 Nov 11 03:23 xab
[root@linuxtechi ~]#

正如我们所看到的,tuxlab.txt 被分成了 xaa 和 xab 两个部分。

(2) 带有详细选项的拆分命令

我们可以在详细模式下运行 split 命令,使用 --verbose 选项

[root@linuxtechi ~]# split tuxlap.txt --verbose
creating file ‘xaa’
creating file ‘xab’
[root@linuxtechi ~]#

(3) 按行数拆分文件 (-l)

假设我们想要分割一个文件,每个文件最多 200 行。

[root@linuxtechi ~]# split -l200 tuxlap.txt --verbose
creating file ‘xaa’
creating file ‘xab’
creating file ‘xac’
creating file ‘xad’
creating file ‘xae’
creating file ‘xaf’
[root@linuxtechi ~]#

使用下面的命令验证每个文件的行数

[root@linuxtechi ~]# wc -l xa*
 200 xaa
 200 xab
 200 xac
 200 xad
 200 xae
  91 xaf
1091 total
[root@linuxtechi ~]#

(4) 按文件大小拆分文件 (-b)

我们可以按文件大小拆分文件,单位为:bytes,KB,MB 和 GB

# split  -b {bytes} {file_name}

# split  -b  nK {file_name}    // n is the numeric value

# split  -b   nM {file_name}      // n is the numeric value

# split  -b   nG {file_name}     // n is the numeric value

按 Bytes 拆分文件

[root@linuxtechi ~]# split -b2000000 tuxlap.txt

按 KB 拆分文件

[root@linuxtechi ~]# split -b 50K tuxlap.txt

按 MB 拆分文件

[root@linuxtechi ~]# split -b 50M tuxlap.txt

按 GB 拆分文件

[root@linuxtechi ~]# split -b 1G tuxlap.txt

(5) 使用数字后缀创建拆分文件 (-d)

在上面的例子中,我们已经看到 split 命令输出文件是用像 xaa, xab ... 这样的字母后缀创建的。使用 -d 选项创建带有数字后缀的分割输出文件,如 x00, x01, x0n

[root@linuxtechi ~]# split -d tuxlap.txt

[root@linuxtechi ~]# ll
total 1024256
-rw-------. 1 root root        980 Aug 12 00:11 anaconda-ks.cfg
-rwx------. 1 root root 1048576000 Nov 11 03:54 linux-lite.iso
-rw-r--r--. 1 root root     120010 Nov 11 04:39 tuxlap.txt
-rw-r--r--. 1 root root      11998 Nov 11 04:41 x00
-rw-r--r--. 1 root root      12000 Nov 11 04:41 x01
-rw-r--r--. 1 root root      12000 Nov 11 04:41 x02
-rw-r--r--. 1 root root      12000 Nov 11 04:41 x03
-rw-r--r--. 1 root root      12000 Nov 11 04:41 x04
-rw-r--r--. 1 root root      12000 Nov 11 04:41 x05
-rw-r--r--. 1 root root      12000 Nov 11 04:41 x06
-rw-r--r--. 1 root root      12000 Nov 11 04:41 x07
-rw-r--r--. 1 root root      12000 Nov 11 04:41 x08
-rw-r--r--. 1 root root      12000 Nov 11 04:41 x09
-rw-r--r--. 1 root root         12 Nov 11 04:41 x10
[root@linuxtechi ~]#

(6) 使用自定义后缀拆分文件

我们可以创建带有自定义后缀的分割输出文件,语法如下:

# split {file_name} {prefix_name}

示例如下:

[root@linuxtechi ~]# split tuxlap.txt split_file_

[root@linuxtechi ~]# ll
total 1024248
-rw-------. 1 root root        980 Aug 12 00:11 anaconda-ks.cfg
-rwx------. 1 root root 1048576000 Nov 11 03:54 linux-lite.iso
-rw-r--r--. 1 root root      11998 Nov 11 04:56 split_file_aa
-rw-r--r--. 1 root root      12000 Nov 11 04:56 split_file_ab
-rw-r--r--. 1 root root      12000 Nov 11 04:56 split_file_ac
-rw-r--r--. 1 root root      12000 Nov 11 04:56 split_file_ad
-rw-r--r--. 1 root root      12000 Nov 11 04:56 split_file_ae
-rw-r--r--. 1 root root      12000 Nov 11 04:56 split_file_af
-rw-r--r--. 1 root root      12000 Nov 11 04:56 split_file_ag
-rw-r--r--. 1 root root      12000 Nov 11 04:56 split_file_ah
-rw-r--r--. 1 root root      12000 Nov 11 04:56 split_file_ai
-rw-r--r--. 1 root root      12000 Nov 11 04:56 split_file_aj
-rw-r--r--. 1 root root         12 Nov 11 04:56 split_file_ak
-rw-r--r--. 1 root root     120010 Nov 11 04:39 tuxlap.txt
[root@linuxtechi ~]#

(7) 生成 n 块输出文件 (-n)

假设我们想把一个 iso 文件分成 5 个 chunk 输出文件

[root@linuxtechi ~]# split -n5 linux-lite.iso

使用 ls 命令验证拆分文件

[root@linuxtechi ~]# ls
total 2048124
-rw-------. 1 root root        980 Aug 12 00:11 anaconda-ks.cfg
-rwx------. 1 root root 1048576000 Nov 11 03:54 linux-lite.iso
-rw-r--r--. 1 root root     120010 Nov 11 04:39 tuxlap.txt
-rw-r--r--. 1 root root  209715200 Nov 11 05:22 xaa
-rw-r--r--. 1 root root  209715200 Nov 11 05:22 xab
-rw-r--r--. 1 root root  209715200 Nov 11 05:22 xac
-rw-r--r--. 1 root root  209715200 Nov 11 05:23 xad
-rw-r--r--. 1 root root  209715200 Nov 11 05:23 xae
[root@linuxtechi ~]#

(8)防止零大小分割输出文件 (-e)

在某些情况下,我们将一个小文件分割成大量的块文件,可能创建零大小的分割输出文件,可以使用-e 选项避免这种情况的出现

[root@linuxtechi ~]# split -n60 -e tuxlap.txt
[root@linuxtechi ~]# ls -l x*
-rw-r--r--. 1 root root 2000 Nov 11 05:34 xaa
-rw-r--r--. 1 root root 2000 Nov 11 05:34 xab
-rw-r--r--. 1 root root 2000 Nov 11 05:34 xac
-rw-r--r--. 1 root root 2000 Nov 11 05:34 xad
-rw-r--r--. 1 root root 2000 Nov 11 05:34 xae
-rw-r--r--. 1 root root 2000 Nov 11 05:34 xaf
-rw-r--r--. 1 root root 2000 Nov 11 05:34 xag
-rw-r--r--. 1 root root 2000 Nov 11 05:34 xah
.............
-rw-r--r--. 1 root root 2000 Nov 11 05:34 xce
-rw-r--r--. 1 root root 2000 Nov 11 05:34 xcf
-rw-r--r--. 1 root root 2000 Nov 11 05:34 xcg
-rw-r--r--. 1 root root 2010 Nov 11 05:34 xch
[root@linuxtechi ~]#

(9) 创建自定义后缀长度的分割输出文件 (-a)

假设我们想要分割一个 iso 文件,其中每个分割输出文件的大小为 500MB,后缀长度为 3

[root@linuxtechi ~]# split -b 500M linux-lite.iso -a 3

[root@linuxtechi ~]# ll
total 2048124
-rw-------. 1 root root        980 Aug 12 00:11 anaconda-ks.cfg
-rwx------. 1 root root 1048576000 Nov 11 03:54 linux-lite.iso
-rw-r--r--. 1 root root     120010 Nov 11 04:39 tuxlap.txt
-rw-r--r--. 1 root root  524288000 Nov 11 05:43 xaaa
-rw-r--r--. 1 root root  524288000 Nov 11 05:43 xaab
[root@linuxtechi ~]#

(10) 拆分 ISO 文件并合并为单个文件

假设我们有一个 4.2 GB 大小的 Windows Server ISO 文件,我们无法将该文件 scp 到远程服务器。

为了解决这种问题,我们可以将 ISO 分成 n 个片段,并将这些片段复制到远程服务器,在远程服务器上,我们可以使用 cat 命令将这些片段合并为一个文件

[root@linuxtechi ~]# split -b 800M Windows2012r2.iso Split_IS0_

使用 ls 命令查看分割输出文件

[root@linuxtechi ~]# ll
total 8871788
-rw-------. 1 root root        980 Aug 12 00:11 anaconda-ks.cfg
-rw-r--r--. 1 root root  838860800 Nov 11 06:29 Split_IS0_aa
-rw-r--r--. 1 root root  838860800 Nov 11 06:29 Split_IS0_ab
-rw-r--r--. 1 root root  838860800 Nov 11 06:29 Split_IS0_ac
-rw-r--r--. 1 root root  838860800 Nov 11 06:29 Split_IS0_ad
-rw-r--r--. 1 root root  838860800 Nov 11 06:29 Split_IS0_ae
-rw-r--r--. 1 root root  347987968 Nov 11 06:29 Split_IS0_af
-rw-r--r--. 1 root root     120010 Nov 11 04:39 tuxlap.txt
-rwx------. 1 root root 4542291968 Nov 11 06:03 Windows2012r2.iso
[root@linuxtechi ~]#

将这些文件 scp 到远程服务器,并使用 cat 命令将这些文件合并为一个文件

[root@linuxtechi ~]# cat Split_IS0_a* > Windows_Server.iso
[root@linuxtechi ~]#

(11) 使用 md5sum 验证合并文件的完整性

如例 10 所示,分割文件合并为单个文件后,我们就可以使用 md5sum 工具检查文件的完整性。示例如下

[root@linuxtechi ~]# md5sum Windows2012r2.iso
5b5e08c490ad16b59b1d9fab0def883a  Windows2012r2.iso
[root@linuxtechi ~]#

[root@linuxtechi ~]# md5sum Windows_Server.iso
5b5e08c490ad16b59b1d9fab0def883a  Windows_Server.iso
[root@linuxtechi ~]#

根据上面的输出,可以确认文件的完整性,我们也可以说分割文件成功恢复为单个文件。

这就是本文的全部内容,如果你喜欢本文,请在下面的评论区分享你宝贵的反馈和评论。

我的开源项目

  • course-tencent-cloud(酷瓜云课堂 - gitee 仓库)
  • course-tencent-cloud(酷瓜云课堂 - github 仓库)

相关推荐

linux安装FTP

1、在nkftp目录下安装ftp,进入到nkftp里面[root@localhostbin]#cd/data/nkftp执行安装命令:[root@localhostnkftp]#rpm-i...

LINUX下搭建FTP服务器

FTP服务器介绍FTP是FileTransferProtocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(App...

Linux下如何进行FTP设置

目录:一、Redhat/CentOS安装vsftp软件二、Ubuntu/Debian安装vsftp软件一、Redhat/CentOS安装vsftp软件1.更新yum源yumupdate-y2.安...

推荐使用集串口 SSH远程登录和FTP传输三合一工具MobaXterm

来源:百问网作者:韦东山本文字数:1216,阅读时长:4分钟在以前的资料里,串口和SSH远程登使用SecureCRT,window与ubuntu数据传输使用filezilla,窗口切换来切换去,麻烦也...

如何搭建FTP服务器(Linux系统)

上次说了Windows操作系统下搭建的FTP服务器,那有朋友问我,说买的XX轻量应用服务器都是属于Linux的操作系统,我该如何为搭建FTP服务器呢?...

Linux 命令 ncftp(文件传输)——想玩转linux就请一直看下去

我是IT悟道,点击右上方“关注”,每天分享IT、科技、数码方面的干货。Linuxncftp命令...

如何用 ftp 实现一键上传

简介ftp是Internet标准文件传输协议的用户界面,它允许用户与远程网络站点之间传输文件...

Linux安装ftp

1安装vsftpd组件安装完后,有/etc/vsftpd/vsftpd.conf文件,是vsftp的配置文件。[root@bogon~]#yum-yinstallvsftpd2添加一个...

一天一点点:linux - ftp命令

linuxftp命令设置文件系统相关功能。FTP是ARPANet的标准文件传输协议,该网络就是现今Internet的前身。语法ftp[-dignv][主机名称或IP地址]参数:-d详细显示指令执...

Centos 7 搭建FTP

目录安装软件以及启动服务添加防火墙规则关闭selinuxftp配置常用常用参数详解特殊参数配置文件没有的参数也可以添加到配置中1.安装软件以及启动服务yuminstall-yvsftpdsys...

【Linux】Linux中ftp命令,没有你想的那么简单

本文介绍了Linux中FTP命令的基本用法,包括连接与登录远程服务器,以及解析了FTP协议中五个最常用的操作命令的使用和解析过程。同时,提供了一个包含常用FTP操作命令的表格,供读者参考。通过熟练掌握...

linux 命令行操作ftp

以下是linuxftp命令参数的详解。FTP>!从ftp子系统退出到外壳?FTP>?显示ftp命令说明??和help相同?格式:?[command]说明:[com...

多学习才能多赚钱之:linux如何使用ftp

linux如何使用ftp步骤1:建立FTP连接想要连接FTP服务器,在命令上中先输入ftp然后空格跟上FTP服务器的域名'domain.com'或者IP地址例如:ftpdom...

linux常用网络操作方法:ftp命令使用方法

常用网络操作方法Linux提供了一组强有力的网络命令来为用户服务,这些工具能够帮助用户登录到远程计算机上、传输文件和执行远程命令等。本节介绍下列几个常用的有关网络操作的命令:ftp传输文件tel...

Linux 5.15有望合并Memory Folios方案 内核构建速度可提升7%

甲骨文公司的长期内核开发人员MatthewWilcox已经研究了“内存对开区”概念相当长的一段时间,这可以改善Linux的内存管理,使其具有更大的效率。例如,使用内存对开的基准测试表明,内核的构建速...

取消回复欢迎 发表评论: