GNU Parallel を使ってみた。for ループと違って、並列実行できるのがよい。並列実行だけなら xargs -P でもいけるが、引数置換が豊富なのがよい。そのままファイル名を渡す {} に加えて、{.} で拡張子より前だけ、{/}でディレクトリ除去だけ、{/.} でディレクトリと拡張子除去。{#} で通し番号。
parallel -P10 ruby script.rb {} {/.}_output.dat {/.}.log ::: ../data/*.dat
みたいにして処理している。
なお、何が起きるのか確認するには、--dry-run をつける。覚えにくければ、コマンド名の前に echo を入れてもいい。
xargs と違って、">" {.}.log のようにすれば、リダイレクトも可能!
使用例は、KOSHIGOE学習帳 - [system] GNU parallel 使用例 が詳しい。