#Bash 的 split 命令
split [OPTION]... [FILE [PREFIX]]
功能
将文件拆分为多个文件。
类型
可执行文件(/usr/bin/split),属于 coreutils。
参数
OPTION选项:-a,--suffix-length=N- 输出文件名后缀长度设为N;默认为 2--additional-suffix=SUFFIX- 输出文件名额外添加后缀SUFFIX-b,--bytes=SIZE- 每个输出文件的大小为SIZE字节-C,--line-bytes=SIZE- 每个输出文件的大小不超过SIZE字节,保持行的完整性-d- 输出文件名后缀使用从 0 开始的数值;默认为aaab格式--numeric-suffixes[=FROM]- 输出文件名后缀使用从FROM开始的数值-x- 输出文件名后缀使用从 0 开始的十六进行数值--hex-suffixes[=FROM]- 输出文件名后缀使用从FROM开始的十六进行数值-e,--elide-empty-files- 使用-n选项时,不生成空文件--filter=COMMAND- 将输出写入COMMAND命令处理,并设置$FILE为文件名-l,--lines=NUMBER- 每个输出文件有NUMBER行;默认为 1000 行-n,--number=CHUNKS- 基于CHUNK生成文件:N- 平均拆分成N个文件K/N- 平均拆分成N份,将第K份打印到标准输出l/N- 平均拆分成N个文件,保持行的完整性l/K/N- 平均拆分成N份,将第K份打印到标准输出,保持行的完整性r/N- 类似l/N但是使用循环分配r/K/N- 类似l/K/N但是使用循环分配
-t,--separator=SEP- 使用SEP而不是换行符(\n)作为行的分隔符-u,--unbuffered- 输出时不使用缓冲--verbose- 在打开每个输出文件前打印诊断信息--help- 显示帮助--version- 显示版本
FILE- 文件列表;如果没有这个参数或指定为-,则读取标准输入PREFIX- 输出文件名前缀;默认为x
#示例
字母后缀
$ split 1.txt # 将文件 1.txt 拆分,每个文件 1000 行
$ ls
1.txt xaa
$ split -n 3 1.txt # 将文件 1.txt 拆分为 3 个文件
$ ls
1.txt xaa xab xac
$ split -n 3 1.txt my_file_ # 输出文件名前缀为 my_file_
$ ls
1.txt xaa xab xac my_file_aa my_file_ab my_file_ac
数值后缀
$ split -n 3 -d 1.txt my_file_ # 前缀为 my_file_,使用从 0 开始的数值后缀
$ ls
1.txt my_file_00 my_file_01 my_file_02
$ split -n 3 --numeric-suffixes=10 1.txt # 前缀为 my_file_,使用从 10 开始的数值后缀
$ ls
1.txt my_file_00 my_file_01 my_file_02 my_file_10 my_file_11 my_file_12
#推荐阅读
#手册
SPLIT(1) User Commands SPLIT(1)
NAME
split - split a file into pieces
SYNOPSIS
split [OPTION]... [FILE [PREFIX]]
DESCRIPTION
Output pieces of FILE to PREFIXaa, PREFIXab, ...; default size is 1000
lines, and default PREFIX is 'x'.
With no FILE, or when FILE is -, read standard input.
Mandatory arguments to long options are mandatory for short options
too.
-a, --suffix-length=N
generate suffixes of length N (default 2)
--additional-suffix=SUFFIX
append an additional SUFFIX to file names
-b, --bytes=SIZE
put SIZE bytes per output file
-C, --line-bytes=SIZE
put at most SIZE bytes of records per output file
-d use numeric suffixes starting at 0, not alphabetic
--numeric-suffixes[=FROM]
same as -d, but allow setting the start value
-x use hex suffixes starting at 0, not alphabetic
--hex-suffixes[=FROM]
same as -x, but allow setting the start value
-e, --elide-empty-files
do not generate empty output files with '-n'
--filter=COMMAND
write to shell COMMAND; file name is $FILE
-l, --lines=NUMBER
put NUMBER lines/records per output file
-n, --number=CHUNKS
generate CHUNKS output files; see explanation below
-t, --separator=SEP
use SEP instead of newline as the record separator; '\0' (zero)
specifies the NUL character
-u, --unbuffered
immediately copy input to output with '-n r/...'
--verbose
print a diagnostic just before each output file is opened
--help display this help and exit
--version
output version information and exit
The SIZE argument is an integer and optional unit (example: 10K is
10*1024). Units are K,M,G,T,P,E,Z,Y,R,Q (powers of 1024) or KB,MB,...
(powers of 1000). Binary prefixes can be used, too: KiB=K, MiB=M, and
so on.
CHUNKS may be:
N split into N files based on size of input
K/N output Kth of N to stdout
l/N split into N files without splitting lines/records
l/K/N output Kth of N to stdout without splitting lines/records
r/N like 'l' but use round robin distribution
r/K/N likewise but only output Kth of N to stdout
AUTHOR
Written by Torbjorn Granlund and Richard M. Stallman.
REPORTING BUGS
GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Report any translation bugs to <https://translationproject.org/team/>
COPYRIGHT
Copyright © 2023 Free Software Foundation, Inc. License GPLv3+: GNU
GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
SEE ALSO
Full documentation <https://www.gnu.org/software/coreutils/split>
or available locally via: info '(coreutils) split invocation'
GNU coreutils 9.4 April 2024 SPLIT(1)