README (file-find)

Last Update: Wed Apr 25 11:53:07 -0600 2007

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(
      :name    => "*.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
  • group
  • name
  • path
  • perm
  • 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 www.rubyforge.org/projects/shards.

Some specific things I plan on adding:

  • exec
  • links

Options that 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 to 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 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 satisified with the sys-filesystem package.

Bugs

None that I‘m aware of. Please log any bug reports on the project page at 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, Daniel J. Berger, All Rights Reserved

Author

Daniel J. Berger

[Validate]