2017-02-21 18 views
1

我有一个大的(1.8GB)文件,我想分割成100MB的文件。为此,我使用GNU分割函数,并带有选项-d。由此产生的数字后缀很奇怪。直到89岁,一切都好,但从9000开始,然后是9001,......等等。有人有一个想法,为什么我得到这种奇怪的行为?错误的数字后缀使用GNU分割

+0

您使用的确切命令是什么?目录中已存在哪些文件? –

+0

我能够重现这个问题。用100000行创建一个文本文件,并用'split -d -l 1000 delme.txt delme_'拆分它,并通过'delme_89'和'delme_9000'到'delme_9009'创建文件'delme_00'。分割版本是8.25 – chw21

回答

5

split这种行为可能是意外,但它是intended this way

在奥德创建文件的任意数量,同时保持正确的词汇顺序,后缀发电机扩展的位数,当它达到它的第一个第一位置的最高位可能。

的词汇顺序是必要的轻松倒车分割使用cat:

split foo bar_ 
cat bar_* > foo 

如果词汇顺序没有得到维持,新foo将错杂。

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

以下命令将通过foo_199产生的文件:

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

但是,那么它是由你来选择一个位数足够大到能够产生你所需要的所有后缀,否则split命令与错误消息提前终止:

split: output file suffixes exhausted 

问题已经被包含在GNU的coreutils gotchas