[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:51238] Re: find expression -or
並木といいます。
From: Hiroki Kashiwazaki <reo@xxxxxxxxxxxxxxxxx>
Subject: [debian-users:51237] find expression -or
Date: Fri, 14 Nov 2008 19:10:07 +0900
> あるユーザ,あるいはあるグループの所有になっているファイル一覧を
> 取得するために以下のようなコマンドを実行しました.
>
> % find ./ -user hoge -o -group fuga -print
>
> しかしその結果として現れたのは「user が hoge ではなく,かつ,
> group が fuga であるもの」でした.
(中略)
> これは find の -o オプションとして正しい挙動なのでしょうか.もし正しい
> 挙動ということであれば,どうにもよく理解できないので解説していただける
> と幸いです.
以下のように解釈しますと、「正しい挙動」と考えることができるのではない
でしょうか。
man find しますと、
評価式は左から右に向って優先順位の高いものから評価する
とあります。で、評価の優先順位は -o より -a (つまり並べただけ) の方が高
いとも書いてありますので、
-user hoge -o -group fuga -print
は、
-user hoge -o \(-group fuga -print\)
と同値ということになると思います。
つまり user が hoge で真になったら、後の方は評価されません。user が
hoge でないファイルになって初めて group が fuga かどうかを評価し、fuga
なら -print が評価されると。
なお、
-prune 以外のアクションが評価式に含まれていない場合は、評価式の結果
が真となったファイルに対して、-print が実行される
とありますので、 -print を付けずに
% find ./ -user hoge -o -group fuga
とすれば、期待通りの動作をしたものと思われます。
---
NAMIKI