我有一个问题的文件夹,如下所示:
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这样做,还是我应该单独编写每个?
答案 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。
这样您就不需要事先知道存在哪些文件。