我有一个文件列表(data1.txt,...,data6.txt),例如,我想对它们运行3次相同的命令。我正在使用gnu parallel
我想要作为输出文件:1data1.txt, 2data1.txt, 3data1.txt, ... , 2data6.txt, 3data6.txt.
我尝试过:
for i in $(seq 3); do parallel -j 8 'myCommand data{}.txt > results/out/{$i}data{}.txt' ::: 1 2 3 4 5 6; done
但是我的输出文件是:{}data1.txt, ...., {}data6.txt
我尝试了不同的可能性,但是我没有得到预期的结果
感谢您的帮助
答案 0 :(得分:0)
使用GNU Parallel的组合功能:
parallel -j 8 myCommand data{2}.txt '>' results/out/{1}data{2}.txt' ::: 1 2 3 ::: 1 2 3 4 5 6
如果您的CPU有8个线程,则可以省略-j8
。如果您以后要在更大的系统上运行它,这是一个好主意。
您还可以使用--results
(要求版本> 20170222):
parallel --results results/out/{1}data{2}.txt myCommand data{2}.txt ::: 1 2 3 ::: 1 2 3 4 5 6 >/dev/null