Bash 使用GNU拆分时出现错误的数字后缀
我有一个大文件(1.8GB),我想将其拆分为最大100MB的文件。为此,我使用GNU拆分函数,并带有选项-d。由此产生的数字后缀很奇怪。直到89年,一切都很好,但从9000年开始,然后是9001年。。。等等有人知道我为什么会有这种奇怪的行为吗 拆分Bash 使用GNU拆分时出现错误的数字后缀,bash,shell,command-line,gnu,gnu-coreutils,Bash,Shell,Command Line,Gnu,Gnu Coreutils,我有一个大文件(1.8GB),我想将其拆分为最大100MB的文件。为此,我使用GNU拆分函数,并带有选项-d。由此产生的数字后缀很奇怪。直到89年,一切都很好,但从9000年开始,然后是9001年。。。等等有人知道我为什么会有这种奇怪的行为吗 拆分的这种行为可能是意外的,但确实如此 为了在保持正确词法顺序的同时创建任意数量的文件,后缀生成器在其第一个位置达到可能的最高位数时扩展位数 词法顺序是使用cat轻松反转拆分所必需的: split foo bar_ cat bar_* > foo
的这种行为可能是意外的,但确实如此
为了在保持正确词法顺序的同时创建任意数量的文件,后缀生成器在其第一个位置达到可能的最高位数时扩展位数
词法顺序是使用cat轻松反转拆分所必需的:
split foo bar_
cat bar_* > foo
如果不保持词法顺序,新的foo
就会混乱不堪
要实现连续数字作为后缀,可以添加-a
参数,其中
是位数
以下命令将通过foo_199
生成文件foo_000
:
seq 20000 | split -d -a 3 -l 100 - foo_
但是,您可以选择足够大的位数,以生成所需的所有后缀,否则,split
命令将提前终止,并显示错误消息:
split: output file suffixes exhausted
这个问题已经包含在GNU coreutils页面您使用的确切命令是什么?目录中已经存在哪些文件?我能够重现这个问题。创建了一个包含100000行的文本文件,并使用split-d-l 1000 delme.txt delme\u
将其拆分,这将通过delme\u 89
和delme\u 9000
通过delme\u 9009
创建文件delme\u 00
。拆分版本是8.25