find -print0

いまどきはUNIXといえどファイル名にどんな文字が入ってるかわからないから
find . -print0 | xargs -0 もげ
だよね普通。
という話で。

find . -uid 100 -print0 | xargs -n 50 -0 chown 101.101
とかやって、特定のユーザIDのファイルを別の人のにchownしていたわけだが。

うっかり

find . -print0 -uid 100 | xargs -n 50 -0 chown betty.betty
としてしまい。

-print0

This primary always evaluates to true. It prints the pathname of

the current file to standard output, followed by an ASCII NUL

character (character code 0).

なので、つまり-print0は常に真なので、つまりこのfindはひたすらファイルツリーをトラバースして全ファイルを列挙していたわけで。
会社の社員用ファイルサーバの全ファイルをbettyさんの持ち物にしてしまいましたとさ。

まあこのNASはNetAppだったので、.snapshotからuid, gidを拾って本来のuid, gidに戻すスクリプトをとっさに書いて戻したわけですが。

-print0は必ずケツにつけないと。と思い知りました。