使用迭代编号重命名输出填充,并使用gnu parallel重命名输入

时间:2018-10-02 13:22:52

标签: gnu gnu-parallel

我有一个文件列表(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

我尝试了不同的可能性,但是我没有得到预期的结果

感谢您的帮助

1 个答案:

答案 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