首页 文章

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

提问于
浏览
-1

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

EDIT :如果重要的话,连接文件可以达到 3GB .

1 回答

  • -1
    use IPC::Run qw( run );
    
    run [ "xargs", "-0", "cat", "--" ],
       '<', \join("\0", @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;
    

相关问题