Perl 拆分1000个文件限制的解决方法?
我需要将几个大文件拆分为特定大小的小文件,输出500-5000个小文件。我使用a-b指定的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=
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