= Description
This is a drop-in replacement for the find module currently in the standard
library. It is modeled on a typical 'find' command found on most Unix systems.

= Synopsis
   rule = File::Find.new(
      :pattern => "*.rb",
      :follow  => false,
      :path    => ['/usr/local/lib', '/opt/local/lib']
   )

   rule.find{ |f|
      puts f
   }

= Installation
* rake test (optional)
* rake install (non-gem) -OR- rake install_gem (gem)

= Rationale
The current find module in the standard library is inadequate. It is, quite
frankly, not much more than a plain Dir.glob call. This package provides an
interface based on options typically available on your command line 'find'
command, thus allowing you much greater control over how you find your files.

I am aware of the find2 package by Motoyuki Kasahara, but it supports very
few options, hasn't been updated in over six years and isn't packaged properly.

= Options
* atime
* ctime
* follow
* ftype
* inum (except Windows)
* group
* name (or 'pattern')
* path
* perm (except Windows)
* prune
* size
* user

See the RDoc documentation for more details about these options.

= Future Plans
More options will be added as time permits, and requests will definitely be
considered. Please log any feature requests on the project page at
http://www.rubyforge.org/projects/shards.

Some specific things I plan on adding:

* symbolic permissions for the :perm option
* exec
* links
* support for :user and :group on MS Windows

= Options I won't support
Generally speaking, anything that would require mucking around with C code
or is just too difficult to implement in a cross platform manner will not be
supported. These include the following options:

* acl/xattr - Way too difficult to implement in a cross platform manner, and
  a rarely used option to boot.

* cpio/ncpio - You can shell out on your own if you want, but I'm not going to
  do it for you. The same goes for any similar options for 3rd party apps that
  your particular platform may support.

* ls/print - You can print file names as you see fit on your own. This isn't
  a shell command replacement.

* ok - This is not interactive software.

= Options I may or may not support

* local/mount/xdev - This will probably not be added until I'm satisfied with
  the sys-filesystem package.
  
= Known Issues
The 'perm' option does not work on MS Windows, even for its limited subset of
permissions, i.e. 664 and 666. This is arguably a bug in Ruby's
File::Stat.mode method on MS Windows.

The 'user' and 'group' options are not currently supported on MS Windows.
This can be supported, but will require changes in the win32-file and
win32-file-stat libraries (which would then become dependencies).

= Bugs
None that I'm aware of. Please log any bug reports on the project page at
http://www.rubyforge.org/projects/shards.

= Acknowledgements
* Richard Clamp's File::Find::Rule Perl module for additional ideas and
  inspiration.

= License
Ruby's

= Copyright
(C) 2007-2008, Daniel J. Berger, All Rights Reserved

= Author
Daniel J. Berger