problem with find's -size and -exec options

j. k. colligan
Mon May 14 22:30:00 GMT 2012

Friends -

I just noticed a difference in behavior between Cygwin's "find" and
the one in Linux, or
so it seems.

I was trying to locate files smaller than a given size, and thus ran

    find . -size -4000c

That worked, and listed the file names only for files < 4000 bytes in
size.  But if I run

    find . -size -4000c -exec ls -l {} \;

it turns out that *all* files are listed!  (Plus the small ones at the
end of the list.)  This
surprised me.  In other similar cases I've run in the past, the
filters took effect before the exec.

The Linux version of "find" doesn't operate that way:  in the latter
case, only the "small"
files are passed to ls.  And if one replaces "-4000c" with "+4000c",
it works as I'd expect.

And yeah, I tried escaping that minus sign for the Cygwin shell, a la

    find . -size \-4000c -exec ls -l {} \;

Same unexpected (to me) result.  Am I way outta whack here, of is this
a real problem?

j. kev
Monday, 2012.05.14 @ 1830 EDT

Problem reports:
Unsubscribe info:

More information about the Cygwin mailing list