[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:51237] find expression -or



柏崎@北海道です.

find の -or オプションについて質問させて頂きます.

あるユーザ,あるいはあるグループの所有になっているファイル一覧を
取得するために以下のようなコマンドを実行しました.

% find ./ -user hoge -o -group fuga -print

しかしその結果として現れたのは「user が hoge ではなく,かつ,
group が fuga であるもの」でした.

仮にこんなことをしてみます.

% touch hoge-hoge
% touch hoge-fuga
% touch fuga-hoge
% touch fuga-fuga
% sudo touch hoge.hoge hoge-hoge
% sudo touch hoge.fuga hoge-fuga
% sudo touch fuga.hoge fuga-hoge
% sudo touch fuga.fuga fuga-fuga
% ls -l
合計 8
drwxr-xr-x  2 hoge  hoge  4096 2008-11-14 18:57 .
drwxr-xr-x  7 hoge  hoge  4096 2008-11-14 18:55 ..
-rw-r--r--  1 hoge  hoge     0 2008-11-14 18:56 hoge-hoge
-rw-r--r--  1 hoge  fuga     0 2008-11-14 18:56 hoge-fuga
-rw-r--r--  1 fuga  hoge     0 2008-11-14 18:56 fuga-hoge
-rw-r--r--  1 fuga  fuga     0 2008-11-14 18:57 fuga-fuga
% find . -user hoge -or -group fuga -print
./fuga-fuga
%

\( \) を使って expression をくるむと期待した挙動になります.

% find . \( -user hoge -or -group fuga \) -print
.
./hoge-fuga
./hoge-hoge
./fuga-fuga
%

これは find の -o オプションとして正しい挙動なのでしょうか.もし正しい
挙動ということであれば,どうにもよく理解できないので解説していただける
と幸いです.

-- 
柏崎 礼生 (Hiroki Kashiwazaki)@HUIST
Assistant Professor @ Graduate School of Information Science and
Technology, Hokkaido University
mailto:reo@xxxxxxxxxxxxxxxxx
Tel:+81-11-706-2056 (Office), +81-11-706-2998 (Takai Lab.)