Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 使用GNU拆分时出现错误的数字后缀_Bash_Shell_Command Line_Gnu_Gnu Coreutils - Fatal编程技术网

Bash 使用GNU拆分时出现错误的数字后缀

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

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

拆分
的这种行为可能是意外的,但确实如此

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

词法顺序是使用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