Help With 'find' Syntax

Malcolm Kay malcolm.kay at internode.on.net
Fri Oct 31 16:44:20 PST 2003


On Sat, 1 Nov 2003 11:34, David Carter-Hitchin wrote:
> Hi Drew,
[snip]
> You may find the following note from man find helpful:
>
> # All primaries which take a numeric argument allow the number to be pre-
> # ceded by a plus sign (``+'') or a minus sign (``-'').  A preceding plus
> # sign means ``more than n'', a preceding minus sign means ``less than n''
> # and neither means ``exactly n''.
>
> So that is why I put a "+" in from of 1024 - to find files over 1024 bytes
> (c).
>
> So in your example below:
> > find /usr \( -mtime 6 -ls -size 100 \) -o \( -ctime 6 -ls -size 100
> > \) -print
>
> You are trying to find files that are exactly 100 512k blocks in
> size. Admittedly the files you found were not of this size 

At each stage find applies the test argument and passes on files that
remain to the next argument for manipulation. This in the first 'or' branch
everthing that satisfies -mtime 6 is passed on to -ls and thus displayed
before it is filtered by the -size 100 argument. To do what Drew wanted the 
-size +100 should be applied *before* the -ls.

(It is difficult to see why Drew would want to use both -ls and -print)

> and I don't
> know why they were found - I can replicate this on my machine here, but I
> don't know why - perhaps it is the file allocation.  This is why I chose
> 1024c instead of block size.
>

Malcolm Kay


More information about the freebsd-questions mailing list