【发布时间】:2016-02-17 00:02:35
【问题描述】:
我在 bash 中有下面的命令,它接受目录中的输入图像,并执行可执行文件“execute”,并在“结果”中输出一些图像结果和文本文件 $file 中的一些文本注释。问题是我需要为每 10 个文件并行运行它。似乎可以编写一个 shell 脚本来每 10 次处理一次。但是,我无法让并行部分工作。如何将文件名(输入图像)作为输入参数传递给 –r,并且仍然并行运行?我已经尝试了很多东西。
for file in *.jpg; do ../../execute --model ../../modelsXX.txt -r $file.txt
--video ../results --threshold=0 $file; done
我试过的链接:
【问题讨论】:
-
execute到底是什么鬼?-r选项到底有什么作用?你到底在哪里并行执行?它与每 10 个文件有什么关系? -
@4ae1e1 它是一个可执行模块。我想为每 10 个文件并行执行 *.jpg 中的文件。那有意义吗?所以它会循环一系列图像。我需要它是并行的,每 10 个文件。我无法让它工作。
-
仍然不能完全符合您目前所说的所有内容,但您是这个意思吗?
counter=0; for file in *.jpg; do (( (counter++) % 10 )) && continue; execute blah blah "$file" & done; wait. -
@4ae1e1 所以,非常感谢您的回复,但我真正坚持的是并行部分。我需要与一个命令并行运行它。因此,我没有使用 for 循环,而是尝试了类似下面的方法,但我无法为 $file.txt 传递文件名参数并为每 10 个图像存储文本输出。那有意义吗?我认为 for 循环方法会起作用,但我无法让上面的解决方案并行工作,所以我在下面尝试使用 seq: seq -f '%g.jpg' 1 10 1000 |并行 -j 4 ./../execute --model ../../modelsXX.txt -r --images results/ --threshold=0
-
我的建议是使用后台,确实是并行的。
标签: bash awk command-line grep command-line-arguments