乐趣区

关于linux:通过11个案例掌握-Linux-Split-命令

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 仓库)
退出移动版