split
是一个类似于grep
或tail
的Unix命令行实用程序。它允许您将较大的文件分成几个较小的文件。
注意 默认情况下,
split
某些选项在macOS上不起作用,因为没有预先安装split的GNU版本。请先使用Homebrew命令安装brew install coreutils
然后在GNU split via中调用gsplit
。
1. 在文本编辑器中创建example.txt
并添加以下内容:
example.txt 1 2 3 4 5 6 7 8 9 10 example line 1 example line 2 example line 3 example line 4 example line 5 example line 6 example line 7 example line 8 example line 9 example line 10
2. 下载Moby Dick的文本以演示使用更大的文件: wget -O moby-dick.txt https://archive.org/stream/mobydickorwhale01melvuoft/mobydickorwhale01melvuoft_djvu.txt
1. 使用默认选项运行split
命令:
split moby-dick.txt
2. 检查您的工作目录:
ls
moby-dick.txt xaa xab xac xad xae xaf xag ...
目录(xaa
,xab
等)中的新文件都包含原始文件的一部分。默认情况下,split
将文件分为每个1000行的子文件。原始moby-dick.txt
文件有16,000行,产生16个子文件。原始moby-dick.txt
文件保持不变。
split
命令第一个参数是文件的名称,如上所示。可选的第二个参数允许您指定输出文件的前缀。默认情况下,此值为x
。
split moby-dick.txt moby-dick
使用上述命令,输出的每个文件名都将以moby-dick
开头。
moby-dick.txt moby-dickaa moby-dickab moby-dickac ...
-l
选项设置每个子文件的行长度。默认情况下,此值为1000。以下命令输出的文件将包含两行文本:
split -l 2 example.txt
$ cat xaa
example line 1
example line 2
-b
(或--size
)选项,将通过大小,而不是行数拆分文件。以下命令将输入文件拆分为每个大小为100KB的子文件:
split -b 100k moby-dick.txt
您可以使用不同的单位指定此值:
如果要将文件拆分为特定数量的子文件,无论大小或长度如何,请使用-n
选项。例如,要将文件拆分为3个部分:
split -n 3 example.txt
使用-d
选项以数字方式而不是按字母顺序标记输出文件:
split -l 2 -d example.txt
x00 x01 x02 x03 x04
使用-a
选项设置标记输出文件时使用的位数或字母数。此选项默认为两个(即x00
)。
split -a 1 -d -l 2 example.txt
x0 x1 x2 x3 x4
以下命令将上面的选项进行组合并将example.txt
拆分成4个子文件,每个子文件都以example-
为前缀并用数字标记:
split -a 1 -n 4 -d example.txt example-
example-0 example-1 example-2 example-3 example.txt
split
命令也可用于显示部分文件而无需创建子文件。以下命令将Moby Dick分解为100个(不创建任何新文件)并显示其中的第10个:
split -n 10/100 moby-dick.txt
与许多shell命令一样,通过使用管道运算符,split
命令也可以接受来自另一个命令的输出作为输入:
grep whale moby-dick.txt | split -l 100