终端命令使用GNU Parallel运行测试

时间:2016-04-18 09:15:29

标签: terminal parallel-processing gnu-parallel

我有一个问题的文件夹,如下所示:

 problem1, domain 1
 problem2, domain 2
 problem3, domain 3

我想使用GNU Parallel来运行这样的一堆问题。这是我尝试过的简短版本:

 seq 01 20 | parallel -k -j6 java pddl/benchmarks_STRIPS/psr/p{}-domain.pddl -f pddl/benchmarks_STRIPS/psr/p{}.pddl

我想要某种命令告诉GNU并行,域1将被编译为问题1,域2是问题2等。 有没有办法使用GNU这样做,还是我应该单独编写每个?

2 个答案:

答案 0 :(得分:2)

我认为这可能是零填充的问题,因为我的seq命令没有零填充数字。

如果你有bash 4+(我认为这是正确的版本),你可以使用:

echo {01..20} | parallel ...

或者,如果您有较旧的bash,则可以使用以下内容:

printf "%02d\n" {1..20} | parallel ...

答案 1 :(得分:1)

我假设存在pXX-domain.pddl文件。您可以使用GNU Parallel的{= =}语法来计算pXX名称:

parallel -k -j6 java {}  -f '{= s/-domain(\.pddl)$/$1/ =}' ::: pddl/benchmarks_STRIPS/psr/p*-domain.pddl

或者恰恰相反:

parallel -k -j6 java '{= s/(\.pddl)$/-domain$1/ =}' -f {} ::: pddl/benchmarks_STRIPS/psr/p??.pddl

需要GNU Parallel 20140722。

这样您就不需要事先知道存在哪些文件。