GNU並列置換操作

GNU並列置換操作

異なるパラメータを使用して交互に実行される2つのコマンドを指定するジョブを実行したいと思います。たとえば、

1. exec --foo $inputfile1 $inputfile.outfile1
2. exec --bar $inputfile2 $inputfile.outfile2
3. exec --foo $inputfile3 $inputfile.outfile3
4. exec --bar $inputfile4 $inputfile.outfile4

2つの並列コマンドを指定するか、2つの入力を指定すると問題が解決する可能性がありますが、より一般的なものが必要です。ファイルはパイプライン「find」コマンドを使用して指定されます。

編集:私の作業コマンドの1つは次のとおりです。

find . -name 'somefiles*' -print0 | parallel -0 -j10 --verbose 'exec --foo {} {.}.outfile' 

2つのコマンドを交互に実行する方法がわかりません。

したがって、デフォルトでParallel-j10で実行する必要があるのは、ファイルセットでfooパラメータを使用して5つのコマンドを実行し、barパラメータを使用してそのうち5つを実行することです。交代せずに外れることもありますが、正確に5/5分割に並列化して、より多くのfoosや棒で終わらないようにしたいと思います。

答え1

まず、すべてのパラメータをファイルに入れてから使用できます。

parallel -a filename command

たとえば、

echo "--fullscreen $(find /tmp -name *MAY*.pdf) $(find /tmp -name *MAY*.pdf).out" >> /tmp/a 
echo "--page-label=3 $(find /tmp -name *MAY*.pdf) $(find /tmp -name *JUNE*.pdf).out" >> /tmp/a 
echo "--fullscreen $(find /tmp -name *MAY*.pdf) $(find /tmp -name *JULY*.pdf).out" >> /tmp/a 

次に、次のコマンドを実行します。

parallel -a /tmp/a evince

答え2

exec --foo $inputfile1 $inputfile.outfile1 & \
exec --bar $inputfile2 $inputfile.outfile2 & \
exec --foo $inputfile3 $inputfile.outfile3 & \
exec --bar $inputfile4 $inputfile.outfile4 &

答え3

これは--foo、次を交互に実行する必要があります--bar

find . -name 'somefiles*' -print0 |
  parallel -0 -j10 --verbose 'exec {= $_=seq() % 2 ? "--foo" : "--bar" =} {} {.}.outfile' 

関連情報