macでfind-xargsからのcpやmvに引数を渡す

ブログ毎日書く宣言を撤回せざるを得ないほど忙しかったわけですが。 以下のようにするとできますよと。

find . -name “*.php” | xargs -J% cp -f % ~/workspace/phpfiles

上記の例は、カレントディレクトリ以下にある.phpファイル全てを~/workspace/phpfilesにコピーするものです。 キモはxargsの-Jオプションで、これを使うと後に続く”%”はパイプからの入力で置換される。 execでも同じ事出来るけど、xargsの方が並列実行できるしより直感的なオプションですね。