我尝试使用perl命令行显示690GB目录中的前10个文件。由于它有很长的文件列表,我的命令以Out of Memory错误结束
perl -MFile::Find -wE '
find(sub { say -s $_, " $File::Find::name" }, "/opt/app")
' \ | sort -nr | head -n10
如何优化此命令以获得所需的输出。我已经使用find命令列出文件,但是至少需要15分钟来处理。
答案 0 :(得分:4)
内存交易速度(未经测试),
perl -MFile::Find -wE'
find(sub{
@s = sort { $b->[0] <=> $a->[0] } [ -s $_, $File::Find::name ], @s;
splice(@s, 10);
}, "/opt/app");
say @$_ for @s;
'