将大文件拆分为子文件。这个过程要怎么做呢?

将大文件拆分为子文件。这个过程要怎么做呢?

我的 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

相关内容