split
split
命令是一个在Unix、Linux和类Unix操作系统中常见的命令行实用程序,用于将一个大文件分割成多个较小的文件。以下是split
命令的详细介绍:
语法
split
命令的语法如下:
split [选项] 文件名 [输出文件名前缀]
其中,[选项]
表示可选的命令行选项,文件名
表示要分割的文件,[输出文件名前缀]
表示生成的文件的文件名前缀。
常用选项
以下是split
命令的一些常见选项:
-b
: 按照指定的大小分割文件。可以使用K、M、G等后缀表示文件大小,例如10M表示分割成大小为10MB的文件。-l
: 按照行数分割文件。-a
: 指定生成的文件名后缀的长度,默认为2。-d
: 使用数字作为输出文件名的后缀。-v
: 使用版本号作为输出文件名的后缀。-t
: 在控制台输出分割进度信息。--help
: 显示帮助信息。-C
选项时,split
会将输入文件分割成多个输出文件,每个输出文件的大小不超过指定的字节数.
-C
和-b
的区别
我们通过一个例子具体说明有什么区别。
将passwd文件通过-b
和-C
两种方式进行分割:
-
以b参数进行分割
[root@localhost 5-8]# split -b 100 passwd -d san_
-
以C参数进行分割
[root@localhost 5-8]# split -C 100 passwd -d Sc_
可以看到san开头的文件比Sc文件多
[root@localhost 5-8]# ls
passwd san_05 san_11 san_17 Sc_02 Sc_08 Sc_14 Sc_20 Sc_26
san_00 san_06 san_12 san_18 Sc_03 Sc_09 Sc_15 Sc_21
san_01 san_07 san_13 san_19 Sc_04 Sc_10 Sc_16 Sc_22
san_02 san_08 san_14 san_20 Sc_05 Sc_11 Sc_17 Sc_23
san_03 san_09 san_15 Sc_00 Sc_06 Sc_12 Sc_18 Sc_24
san_04 san_10 san_16 Sc_01 Sc_07 Sc_13 Sc_19 Sc_25
我们可以看看小文件是怎么样的
[root@localhost 5-8]# cat san_00
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nol
[root@localhost 5-8]# cat Sc_00
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
当然我们也可以直接用diff查看文件是否相同
[root@localhost 5-8]# diff san_00 Sc_00
3d2
< daemon:x:2:2:daemon:/sbin:/sbin/nol
\ 文件尾没有 newline 字符
这个输出结果说明了两个文件的第三行不同。d2
表示第二个文件删除了第三行,<
符号后面是第一个文件中仅出现的文本。\
符号后面是一个警告消息,说明第一个文件的最后一行没有换行符。
需要注意的是:虽然-b
和-C
都是以字符为单位切割文件,但是-C
会优先考虑整行的输出,多余的就不会放到这个文件里。
常见用法
以下是split
命令的一些常见用法:
-
分割文件并生成多个输出文件:提供
-b
或-l
选项和文件名前缀时,split
命令将生成多个输出文件,每个文件大小或行数都符合指定的要求。split -b 10M file.txt output # 将file.txt分割成大小为10MB的多个文件,以output为文件名前缀 split -l 100 file.txt output # 将file.txt分割成每个文件100行的多个文件,以output为文件名前缀
-
指定生成的文件名后缀长度:使用
-a
选项可以指定生成的文件名后缀的长度,默认为2。split -a 3 file.txt output # 将file.txt分割成多个文件,并使用3位数字作为文件名后缀,以output为文件名前缀
-
指定生成的文件名格式:使用
-d
或-v
选项可以指定生成的文件名后缀格式。-d
表示使用数字作为后缀