Now what would you expect this to print out?
RW
fbsd06 at mlists.homeunix.com
Tue May 20 00:57:18 UTC 2008
On Mon, 19 May 2008 21:46:03 +1200
Jonathan Chen <jonc at chen.org.nz> wrote:
> On Mon, May 19, 2008 at 01:49:35AM -0700, Garrett Cooper wrote:
> > Riddle for the day for folks that have source trees... what would
> > you expect this to print out (ask yourself the question and then
> > execute the command)?
> >
> > find /usr/src -name Makefile -or -name '*.mk' -print
> >
> > The expected output and what actual output differed in my mind, but
> > maybe somebody else can "shed some light" on the logic behind what
> > happened
>
> It's a problem that catches many young players with find(1). One has
> to remember from reading the man-page that all directives have an
> implicit AND operator on it; and that includes the "-print" directive.
> So to get what you want, you have to introduce brackets:
>
> find /usr/src \( -name Makefile -or -name '*.mk' \) -print
>
Why does that make a difference, when print always evaluates to true?
x AND true = x
so
(a OR b) AND true = a OR b
a OR (b AND true) = a OR b
More information about the freebsd-questions
mailing list