2008年7月28日月曜日

[unix] スペースを含むファイル名をfindとxargsで使う方法

Mac OS Xみたいに、ディレクトリやファイル名にスペースを含んでいる場合
find と xargsをそのまま実行すると
スペースの前後で別々の引数として処理される(´・ω・`)

・対応方法
スペースを区切り文字にするのではなく0(ゼロ、null)を区切り文字にする。

$ find . -type f -print0 | xargs -0 ls
のように
find には、-print0
xargsには、-0もしくは--null
オプションを指定する。

それでも正しく認識せんぞという場合は効率が悪いけど
xargs -i と "{}" を書くようにしよう・・・
 find -print0 | xargs --null -i ls "{}"

0 件のコメント: