split [OPTION] [INPUT [PREFIX]]
功能
将文件分割成多片。
描述
将输入文件 INPUT
分割,输出固定大小的文件片段 PREFIXaa
, PREFIXab
,…,这里,默认的大小为1000行,并且 PREFIX
的默认值为 x
,如果没有指定输入文件( INPUT
文件),或者输入为 -
,那么会从标准输入读取。
选项如下:
-
-a
,--suffix-length=N
: 使用的后缀的长度,默认长度为2,例如aa
,ab
等后缀,其长度就是2。 -
-b
,--bytes=SIZE
: 指定每个输出文件片段的大小。 -
-C
,--line-bytes=SIZE
: 指定每个输出文件片段的最大行字节(???)。 -
-d
,--numeric-suffixes
: 指定输出文件片段后缀为数字而不是默认的字母形式。 -
-l
,--lines=NUMBER
: 指定每个输出文件片段的行数。
以上,指定的大小 SIZE
可以用如下的方式指定单位:后缀为 b
表示512字节,后缀为 k
表示 1K
,后缀为 m
表示 1M
。
举例
将文件 rootfs.tgz
分割成 15m
每份
# split -b 15m rootfs.tgz
这里,会将文件 rootfs.tgz
分割成多个片段,每个 15m
,最后一个根据文件大小可能小于 15m
。单位 15m
中的 m
必须小写。另外,不加 m
单位的话则为字节。
具体如下:
(1)分割之前
#ls -l
-rw-r--r-- 1 quietheart quietheart 35055284 01-06 10:49 rootfs.tgz
(2)分割之后
# du -shc *
34M rootfs.tgz
16M xaa
16M xab
3.5M xac
67M 总计
# ls -l
总计 68572
-rw-r--r-- 1 quietheart quietheart 35055284 01-06 10:49 rootfs.tgz
-rw-r--r-- 1 root root 15728640 01-06 10:57 xaa
-rw-r--r-- 1 root root 15728640 01-06 10:57 xab
-rw-r--r-- 1 root root 3598004 01-06 10:57 xac
这里,"du"命令大小有误差,使用ls -l可看到15728640实际就是15M。
(3)将文件合并
#cat xaa xab xac >merge.tgz
这样会将分割的文件合并还原。
将文件 rootfs.tgz
分割成 15m
每份,前缀名称为 rootfs
# split -b 15m rootfs.tgz rootfs
这样,生成的文件片段名称不是默认的 x
为前缀而是以指定的 rootfs
为前缀了。
分割之后,文件如下:
# ls
rootfsaa rootfsab rootfsac rootfs.tgz
将文件 rootfs.tgz
分割成 15m
每份,后缀名称为数字
# split -b 15m rootfs.tgz -d
这样,分割之后,每个文件片段的后缀不是默认的字母而是数字了,前缀(默认为 x
)也可以自己指定的。运行之后如下:
# ls
rootfs.tgz x00 x01 x02
这里, x00
, x01
, x02
就是文件片段。
其他
可以使用 cat
命令将分割的文件片段合并。
例如:
#cat xaa xab xac >merge.tgz
这样会将分割的文件片段 xaa
, xab
, xac
合并还原成 merge.tgz
。
网友评论