使用迭代编号重命名输出文件并使用 gnu parallel 输入
rename output files with iteration number and input with 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
我尝试了不同的可能性,但没有得到预期的结果
使用 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
我有一个文件列表(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
我尝试了不同的可能性,但没有得到预期的结果
使用 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