いまどきは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は常に真なので、つまりこのfindはひたすらファイルツリーをトラバースして全ファイルを列挙していたわけで。-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).
会社の社員用ファイルサーバの全ファイルをbettyさんの持ち物にしてしまいましたとさ。
まあこのNASはNetAppだったので、.snapshotからuid, gidを拾って本来のuid, gidに戻すスクリプトをとっさに書いて戻したわけですが。
-print0は必ずケツにつけないと。と思い知りました。