[自在]スペースありのディレクトリを扱うためのfindとxargsのオプションは、-print0と-0だ。

Macでファイルを一括処理したいのだけどうまくいかず、しばらく原因不明だった。

findでファイル名を取得して、xargsでパラメータとして渡しているはずなのに、うまくいかない。

何度もやっているうちに、パターンが分かってきた。
ディレクトリ名にスペースが入っているので、そこでパラメータが切れてしまっているのだ。

手作業でやるのなら「\スペース」で対応できるのだが、findで取得したファイル名にはどうすればいいのだ?と思ってググってみた。

下記のサイトに解決方法が書いてあった。スペースをセパレータとせずに、nullをセパレータとしてfindとxargsで処理させれば良いのだ。

findに-print0オプションでnullをセパレータとした書き出しを行い、xargsに-0オプションを付けることによって、nullをセパレータとして処理してくれるとのことだ。開眼!!

[linux][mac os x]スペースを含むファイル名がある場合にfindとxargsを使う方法 | [ま]技術雑記

ちなみに、『UNIXコマンドツール(第4版)』も便利に使っているのだが、この方法の解説はなかった。

UNIXコマンドブック 第4版
田谷 文彦 三澤 明
ソフトバンククリエイティブ
売り上げランキング: 34,509