我有一个大的(1.8GB)文件,我想分成最大100MB的文件。为此,我使用GNU拆分功能,选项-d。结果数字后缀很奇怪。直到89,一切都很好,但随后它从9000开始,然后是9001,......等等。有没有人知道为什么我会得到这种奇怪的行为?
答案 0 :(得分:7)
split
的这种行为可能会出乎意料,但它是intended this way。
在保持正确词汇顺序的同时创建任意数量的文件时,后缀生成器会在其第一个第一个位置达到最高位数时扩展位数。
词汇顺序对于使用cat轻松扭转分割是必要的:
split foo bar_
cat bar_* > foo
如果没有维持词汇顺序,新的foo
将会混乱。
要将连续数字作为后缀,您可以添加-a <n>
参数,其中<n>
是位数。
以下命令将生成文件foo_000
到foo_199
:
seq 20000 | split -d -a 3 -l 100 - foo_
但是,您可以选择足够大的数字来生成所需的所有后缀,否则split
命令会提前终止并显示错误消息:
split: output file suffixes exhausted
此问题已包含在GNU coreutils gotchas页面
中