用Perl连接数千个文件的最有效方法



我正在寻找连接数千个文件的最有效方法。到目前为止,我的做法(使用Perl(是:打开源路径和目标路径,并将每一行插入到目标文件。当然,这需要很多时间。我想使用Linux命令cat来解决这个问题。但从过去的线程中,我了解到cat有MAX_ARG,它设置了对命令行的限制。假设您有一个数组@paths,它包含要连接的所有路径。使用Perl将数千个文件连接到一个主文件中(顺序无关紧要(,最有效的方法是什么?

EDIT:如果这很重要,连接文件可能会达到3GB

use IPC::Run qw( run );
run [ "xargs", "-0", "cat", "--" ],
'<', join("", @paths),
'>', $output_qfn;

您可以使用find生成要连接的文件列表。

use IPC::Run qw( run );
run [ "find", ..., "-print0" ],
'|' [ "xargs", "-0", "cat", "--" ],
'>', $output_qfn;

在GNU系统(例如Linux(上,使用find时可以避免使用xargs

use IPC::Run qw( run );
run [ "find", ..., "-exec", "cat", "--", "{}", "+" ],
'>', $output_qfn;

最新更新