Assume that you want to list files that are
"beautiful." You have written a
program called beauty that returns zero if a
file is beautiful and nonzero otherwise. (This program can be a shell
script, a perl script, an executable from a C
program, or anything you like.)
Here's an example:
% find . -exec beauty {} \; -print
In this command, -exec is just another
find operator. The only difference is that we
care about its value; we're not assuming that it
will always be "true."
find executes the beauty
command for every file. Then -exec evaluates to
true when find is looking at a
"beautiful" program, causing
find to print the filename. (Excuse us, causing
find to evaluate the
-print. :-))
Of course, this ability is capable of infinite variation. If
you're interested in finding beautiful C code, you
could use the command:
% find . -name "*.[ch]" -exec beauty {} \; -print
For performance reasons, it's a good idea to put the
-exec operator as close to the end as possible.
This avoids starting processes unnecessarily; the
-exec command will execute only when the
previous operators evaluate to true.
--JP and ML
 |  |  |
9.9. Running Commands on What You Find |  | 9.11. Custom -exec Tests Applied |