我的 unix 盒子里有一个 2 GB 的大文件。这些文件包含 xml 行。我想将这些文件分成 10 个文件,假设每个文件现在为 204 MB(大约),这样合并这 10 个文件应该会返回 2Gb 的原始文件。请注意,当我将 10 个文件与原始文件合并时,内容应该是可重现的。
在unix下应该如何做到这一点?
答案1
有一个split
命令:
~$ split --help
Usage: split [OPTION]... [INPUT [PREFIX]]
Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default
size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when INPUT
is -, read standard input.
...
-n, --number=CHUNKS generate CHUNKS output files.
...
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
l/K/N output Kth of N to stdout without splitting lines
r/N like `l' but use round robin distribution
r/K/N likewise but only output Kth of N to stdout
所以你只需要做
~$ split -n10 -d myfile mySubFile_
创建 10 个带有数字后缀(-d
选项)的文件,后缀为mySubFile_
~$ ls -1t
mySubFile_00
mySubFile_01
mySubFile_02
mySubFile_03
mySubFile_04
mySubFile_05
mySubFile_06
mySubFile_07
mySubFile_08
mySubFile_09
你可以重新组合
cat mySubFile_* > myfile