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

Terminal Command to run tests using 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 parallel 域 1 将使用问题 1 进行编译,域 2 将使用问题 2 等进行编译。 有没有办法使用 GNU 来做到这一点,还是我应该单独写出每个?

我认为这可能是零填充的问题,因为我的 seq 命令不会对数字进行零填充。

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

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

或者,如果您的年龄较大 bash,您可以使用类似的东西:

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

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

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

或者如果相反:

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

需要 GNU Parallel 20140722。

这样你就不需要提前知道哪些文件存在了。