xargsで並行してコマンドを実行する

しょっちゅうは使わないけどたまに使うコマンドxargsで、並行してコマンドを実行できるオプションを知ったので記録。

-Pオプションで同時に実行する最大プロセス数を指定できる。0にするとxargsができるだけ多くのプロセスを実行しようとする。

dir1以下のすべてのmp4ファイルについてfpsを10にして上書きする、をできるだけ並行して実行する。

find dir1/ -name *.mp4 | xargs -P 0 -IREPLACE ffmpeg -i REPLACE -r 10 REPLACE

上記で併せて使っているxargsの-Iオプションも地味に便利。xargsは、-Iオプションで指定された文字列をパイプされてきたデータで置き換えてくれる。

参考リンク

https://linuxjm.osdn.jp/html/GNU_findutils/man1/xargs.1.html