GNU parallel:对文件夹中的所有文件并行执行一个命令

时间:2017-11-16 14:33:36

标签: linux bash gnu-parallel

我正在尝试使用不同参数并行化粒子模拟以节省一些时间。因此,我想使用GNUparallel为不同的参数运行bash脚本。脚本读取文件然后执行模拟,例如:

$bash script <<< input file

但是: -

$cd ~/parameter_files ls | parallel bash script <<< {}

根本不起作用。我是Linux和GNUparallel的新手,所以希望有人可以提供帮助。

2 个答案:

答案 0 :(得分:2)

你几乎是对的,在命令

周围使用双引号
ls | parallel "bash script <<< {}"

否则,此处的字符串<<<会将输入提供给parallel命令而不是每个bash script命令

我发现这个用例非常不寻常,因为这意味着基本上你的脚本正在读取文件名 string 。如果您只想将文件作为参数传递给脚本,则可以使用

ls | parallel bash script

或者如果您想使用标准输入

传递文件的内容
ls | parallel "bash script < {}"

答案 1 :(得分:0)

您可以在parallel目录的每个文件中使用~/parameter_files

find ~/parameter_files -maxdepth 1 -type f -print0 | parallel -0 bash ../script
  • find命令查找~/parameter_files目录中的所有文件并返回NUL终止
  • parallel -0 bash ...将每个文件名提供给您的shell脚本并执行它。