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

时间:2017-02-21 23:24:46

标签: bash shell command-line gnu gnu-coreutils

我有一个大的(1.8GB)文件,我想分成最大100MB的文件。为此,我使用GNU拆分功能,选项-d。结果数字后缀很奇怪。直到89,一切都很好,但随后它从9000开始,然后是9001,......等等。有没有人知道为什么我会得到这种奇怪的行为?

1 个答案:

答案 0 :(得分:7)

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页面