findとxargsの組み合わせ

http://hirkaz.blogspot.com/2008/09/blog-post_01.html
こういうのを見るとどうしても

$ find ~/dev/php -name '*.php' -a -print0 | xargs -0 nkf --overwrite -w -Lu

と書き直したくなる。元のままだとスペースを含んだファイル名を扱えないからね。

一応説明しておくと、元のコードでは"foo bar.php"というファイルがあった場合、xargsが"foo"と"bar.php"を処理しようとしてエラーになってしまう。
そこで、findで-print0を使うと"\0"区切りで出力してくれて、xargsに-0を指定すると引数を"\0"区切りとして扱ってくれるので"foo bar.php"として処理してくれる。


ファイル名にスペース入れるなっていう話もあるけど、Windowsな人はよく作るよね。あとAdobeとか。



(あれ。トラックバック打てねぇや)



ちなみに-print0の前の-a(AND)は省略できるよ。