我正在寻找连接数千个文件的最有效方法 . 到目前为止我(使用Perl)的方式是:我将打开源和目标路径并将每一行插入目标文件 . 当然,这需要很多时间 . 我想到使用Linux命令 cat 来解决这个问题 . 但是从过去的线程中,我知道cat有 MAX_ARG 设置了命令行的限制 . 考虑你有一个数组 @paths ,其中包含所有连接的路径 . 使用Perl将数千个文件连接成一个主文件(顺序无关紧要)的最有效方法是什么?
cat
MAX_ARG
@paths
EDIT :如果重要的话,连接文件可以达到 3GB .
3GB
use IPC::Run qw( run ); run [ "xargs", "-0", "cat", "--" ], '<', \join("\0", @paths), '>', $output_qfn;
您可以使用 find 生成要连接的文件列表 .
find
use IPC::Run qw( run ); run [ "find", ..., "-print0" ], '|' [ "xargs", "-0", "cat", "--" ], '>', $output_qfn;
在GNU系统(例如Linux)上,使用 find 时可以避免 xargs .
xargs
use IPC::Run qw( run ); run [ "find", ..., "-exec", "cat", "--", "{}", "+" ], '>', $output_qfn;
1 回答
您可以使用
find
生成要连接的文件列表 .在GNU系统(例如Linux)上,使用
find
时可以避免xargs
.