使用 GNU 拆分的错误数字后缀

Wrong numeric suffix using GNU split

我有一个大 (1.8GB) 文件,我想将其拆分为最大 100MB 的文件。为此,我使用 GNU split 函数和选项 -d。生成的数字后缀很奇怪。直到 89,一切都很好,但是从 9000 开始,然后是 9001,...等等。有谁知道我为什么会出现这种奇怪的行为?

split 的这种行为可能出乎意料,但 intended this way

为了在保持正确的词汇顺序的同时创建任意数量的文件,后缀生成器在其第一个位置达到可能的最高数字时扩展数字的数量。

词法顺序是使用 cat 轻松反转拆分所必需的:

split foo bar_
cat bar_* > foo

如果不维护词汇顺序,新的 foo 将会混乱。

要实现连续数字作为后缀,可以加上-a <n>参数,其中<n>是位数。

以下命令将生成文件 foo_000foo_199:

seq 20000 | split -d -a 3 -l 100 - foo_

但是,您需要选择足够大的数字来生成您需要的所有后缀,否则 split 命令将过早终止并显示错误消息:

split: output file suffixes exhausted

此问题已包含在 GNU coreutils gotchas 页面