45

使用GNU parallel: http://www.gnu.org/software/parallel/

2 つの引数を取るプログラムがあります。

$ ./prog file1 file2
$ ./prog file2 file3
...
$ ./prog file23456 file23457

ファイル名のペアを生成するスクリプトを使用していますが、スクリプトの結果がペアではなく単一の文字列であるため、問題が発生します。お気に入り:

$ ./prog "file1 file2"

GNU parallelにはたくさんのトリックがあるようですが、セパレーターの周りでテキストを分割するためのトリックがあるのではないかと思います:

$ generate_file_pairs | parallel ./prog ?  
  # where ? is text under consideration, like "file1 file2"

簡単な回避策は、prog で引数を手動で分割することですが、それが可能かどうか知りたいですGNU parallel

4

4 に答える 4

80

あなたはおそらく を探してい--colsepます。

generate_file_pairs | parallel --colsep ' ' ./prog {1} {2}  

詳細をお読みくださいman parallel。また、紹介ビデオをまだご覧になっていない場合は、http://www.youtube.com/watch?v=OpaiGYxkSuQをご覧ください。

于 2011-06-06T21:25:56.450 に答える
1

-nパラレルのオプションを探しています。これはあなたが探しているものです:

./generate_file_pairs | parallel -n 2 ./prog {}

GNU Parallel Docからの抜粋:

-n max-args
    Use at most max-args arguments per command line. Fewer than max-args 
    arguments will be used if the size (see the -s option) is exceeded, 
    unless the -x option is given, in which case GNU parallel will exit.
于 2011-06-06T18:05:37.920 に答える