Perl 拆分1000个文件限制的解决方法?

Perl 拆分1000个文件限制的解决方法?,perl,unix,awk,sed,Perl,Unix,Awk,Sed,我需要将几个大文件拆分为特定大小的小文件,输出500-5000个小文件。我使用a-b指定的split,因此当达到split1000文件限制时,我使用手动解决方法。是否有另一个UNIX命令或Perl one liner可以完成此任务?如果我尝试创建大量文件,我会 $ perl -e'print "x"x5000' | split -b 1 && echo done. split: output file suffixes exhausted 默认情况下,后缀长度为2,允许262=

我需要将几个大文件拆分为特定大小的小文件,输出500-5000个小文件。我使用a-b指定的
split
,因此当达到
split
1000文件限制时,我使用手动解决方法。是否有另一个UNIX命令或Perl one liner可以完成此任务?

如果我尝试创建大量文件,我会

$ perl -e'print "x"x5000' | split -b 1 && echo done.
split: output file suffixes exhausted
默认情况下,后缀长度为2,允许262=676个部分。将其增加到三允许263=17576个零件

$ perl -e'print "x"x5000' | split -b 1 -a 3 && echo done.
done.

可以通过设置以下内容来控制Perl的输入记录概念:

$/
设置为对整数的引用,标量包含整数, 或可转换为整数的标量将尝试读取 记录而不是行,最大记录大小为 引用的整数字符数。因此:

local $/ = \32768; # or \"32768", or \$var_containing_32768
open my $fh, "<", $myfile or die $!;
local $_ = <$fh>;

你确定1000个文件的限制吗

原始的
split
没有这样的限制,GNU或BSD版本的
split
也没有限制。也许你把后缀长度和某种限制混淆了。在BSD上,后缀从
.aaa
开始,一直到
.zzz
,超过17000个文件

如果三个字符的后缀不够,可以使用
-a
标志调整后缀大小

$ split -a 5 $file

你能调整你的文件句柄限制吗?GNU Coreutils的
split
没有这样的限制。如果有大量文件,则必须调整后缀长度。(
perl-e'print“x”x5000'
创建包含5000个
x
字符的文件。)
$ split -a 5 $file