ディレクトリ名に0x20(空白)が入るMac OS X環境でfindに-print0を使わずにxargsで受け取るのはヤバい。かなり危険。一度AppleがiTunesのアップデートスクリプトで0x20デリミタの想定外動作をやらかして、誤消去したことがあったよなぁ。
なので「findには必ず-print0オプションを付けて、xargs -0で受け取る」というのを広く世に広めたい。例えば
find . -type f -name '*~' -print0 | xargs -0 rmという感じ。
「ディレクトリ名に0x20なんて含めネェよ」という伝統的なUNIX使いの人でも、Sambaやnetatalkでファイルサーバーを構築していたりするのなら必須だし。
-print0オプションは最後に付けないとヤバい:
ぼんやりと考えたこと_
からのTrackBackで指摘があるけど、-print0を-nameなどよりも先に指定すると、他の条件は無関係に全てのファイルを出力してしまう。
-exec utility {} + でも良い:
「\;」のかわりに「+」で終端させるとxargsと同じように複数ファイルを同時に処理出来る。
[ コメントする ]