2014年5月10日土曜日

xargs コマンドを用いたお手軽並列化

カレントディレクトリにある複数の ps ファイルを eps に変換する場合、
これまでは

    for f in *.ps; do
      name=`basename ${f} .ps`
      convert -rotate 90 ${name}.ps ${name}.eps
    done

という感じでやっていました(bash の場合)。

ですがファイル数が万単位になってくるととても時間がかかるので、
xargs を使って並列化したのがこちらです。

    $ ls *.ps | xargs -I{} basename {} .ps | xargs -P2 -I{} convert -rotate 90 {}.ps {}.eps

拡張子の前の文字列が変換前後で同じであってほしい
(たとえば hoge.ps を変換したものは hoge.eps になってほしい)
ので、basename を挟んでいます。

実行して別窓で top してみると、convert が 2 本走っていることが分かります。

0 件のコメント:

コメントを投稿