Very Hard Delight Life

内容はLinux, HW, プログラミング, HaFaBra.

xargsでシェル組込み機能(リダイレクトなど)を使う

参考: xargsでもパイプとかif文とか使いたい - BlankTar

  echo -n >cmd_list
  for f in `find . -type f -name ".log"`; do 
    echo "perl foo.pl ${f} 2>&1 log_${foo/./_result.}" >> cmd_list
  done
  cat cmd_list | xargs -I % sh -c "%"

xargsコマンドで並列処理を簡単に行うことができます。 ただ、パイプなどシェルの組込み機能を使おうとすると、xargsコマンドでは上手く処理できません。 sh(任意のシェル)コマンドを用いるとパイプライン処理やリダイレクト、はたまたifとかができるようです。