多くのファイルに対して操作を実行するために単純な for ループを書いていることがよくあります。たとえば、次のようになります。
for i in `find . | grep ".xml$"`; do bzip2 $i; done
私の 4 コア マシンで 1 つのコアしか使用されていないのは少し気のめいるようです.シェル スクリプトに並列処理を追加する簡単な方法はありますか?
編集:私の問題にもう少しコンテキストを導入するために、申し訳ありませんが、最初から明確ではありませんでした!
妥当なサイズのデータセット (通常は 100 ~ 10,000) に対して、グラフのプロット、圧縮または解凍、または何らかのプログラムの実行など、単純な (っぽい) スクリプトを実行したいことがよくあります。このような問題を解決するために私が使用するスクリプトは上記のように見えますが、別のコマンド、または実行する一連のコマンドが含まれている場合があります。
たとえば、今私は実行しています:
for i in `find . | grep ".xml.bz2$"`; do find_graph -build_graph $i.graph $i; done
したがって、私の問題は bzip 固有のものではありません! (並列 bzip はクールに見えますが、将来的に使用するつもりです)。