File-find 0.1.0

Hi all,

I’m happy to announce the first release of file-find. This package is
meant as a replacement for the current ‘find’ module in the Ruby
standard library. It provides many more options for controlling the
behavior of your find operations.

It is modelled on the ‘find’ command typically found on Unix systems.

Example1:

Look for all .rb files changed in the last 24 hours

rule = File::Find.new(:name => “*.rb”, :ctime => 0)
rule.find{ |file| puts file }

Look for all text files owned by user id 23, don’t follow symlinks

rule = File::Find.new(:name => “*.txt”, :user => 23, :follow => false)
rule.find{ |file| puts file }

You can find install the file-find package as a gem, or grab the file
from the project page at http://rubyforge.org/projects/shards/. You
can also find it on the RAA.

Enjoy!

Dan

On 4/24/07, Daniel B. [email protected] wrote:

can also find it on the RAA.
Woo! Thanks!
One question: what happens when you iterate over a directory you do
not have permission to read? Rio throws an exception and exits,
meaning the remaining files are skipped, which is not cool. I tried to
provide an option to skip forbidden directories, but Rio is a bit
convoluted.

On 4/24/07, Leslie V. [email protected] wrote:

Example1:
from the project page at http://rubyforge.org/projects/shards/. You
can also find it on the RAA.

Woo! Thanks!
One question: what happens when you iterate over a directory you do
not have permission to read? Rio throws an exception and exits,
meaning the remaining files are skipped, which is not cool. I tried to
provide an option to skip forbidden directories, but Rio is a bit
convoluted.

It skips them. :slight_smile:

Regards,

Dan

On 4/24/07, Daniel B. [email protected] wrote:

You can find install the file-find package as a gem, or grab the file
It skips them. :slight_smile:
Yummy! Downloading now…

Sweet I want one. Where's the download link?

> On 4/24/07, Leslie Viljoen wrote:
>
>> On 4/24/07, Daniel B. wrote:
>>
>>> Hi all,
>>>
>>> I'm happy to announce the first release of file-find. This
>>> package is meant as a replacement for the current 'find' module
>>> in the Ruby standard library. It provides many more options for
>>> controlling the behavior of your find operations.
>>>
>>> It is modelled on the 'find' command typically found on Unix
>>> systems.
>>>
>>> Example1:
>>>
>>> # Look for all .rb files changed in the last 24 hours rule =
>>> File::Find.new(:name => "*.rb", :ctime => 0) rule.find{ |file|
>>> puts file }
>>>
>>> # Look for all text files owned by user id 23, don't follow
>>> symlinks rule = File::Find.new(:name => "*.txt", :user => 23,
>>> :follow => false) rule.find{ |file| puts file }
>>>
>>> You can find install the file-find package as a gem, or grab
>>> the file from the project page at
>>> http://rubyforge.org/projects/shards/. You can also find it on
>>> the RAA.
>>>
>>
>> Woo! Thanks!
>> One question: what happens when you iterate over a directory you
>> do not have permission to read? Rio throws an exception and
>> exits, meaning the remaining files are skipped, which is not
>> cool. I tried to provide an option to skip forbidden directories,
>> but Rio is a bit convoluted.
>>
>
> It skips them. :)
>
> Regards,
>
> Dan

On 4/24/07, Servando G. [email protected] wrote:

I’m happy to announce the first release of file-find. This
package is meant as a replacement for the current ‘find’ module
in the Ruby standard library. It provides many more options for
controlling the behavior of your find operations.

Can you find directories with this?

#!/usr/local/bin/ruby

require ‘rubygems’
require ‘yaml’
require ‘file/find’

finder = File::Find.new(:name => ‘*’, :path => ‘/etc’, :ftype =>
‘directory’)
finder.find{|d| p d}

–gives me nothing.

Les

On Apr 24, 4:15 pm, “Leslie V.” [email protected] wrote:

Hi all,
require ‘rubygems’
require ‘yaml’
require ‘file/find’

finder = File::Find.new(:name => ‘*’, :path => ‘/etc’, :ftype => ‘directory’)
finder.find{|d| p d}

–gives me nothing.

That would be a bug. Please file it on the RubyForge project page so I
don’t forget.

Thanks,

Dan

Leslie V. wrote:

Hi all,
require ‘rubygems’
require ‘yaml’
require ‘file/find’

finder = File::Find.new(:name => ‘*’, :path => ‘/etc’, :ftype =>
‘directory’)
finder.find{|d| p d}

–gives me nothing.

Nevermind about the bug report. It’s fixed in CVS. :slight_smile:

Thanks,

Dan

On 4/25/07, Daniel B. [email protected] wrote:

Nevermind about the bug report. It’s fixed in CVS. :slight_smile:
Thanks for that, it works very well now.
:slight_smile:

Servando G. wrote:

Sweet I want one. Where’s the download link?

http://raa.ruby-lang.org/project/file-find/

Dan

On Apr 25, 4:55 am, “Leslie V.” [email protected] wrote:

–gives me nothing.

Nevermind about the bug report. It’s fixed in CVS. :slight_smile:

Thanks for that, it works very well now.
:slight_smile:

I just put out 0.2.0 today. This version adds “prune” and “perm”, as
well as fixes a bug where subdirectories weren’t being traversed.

Regards,

Dan

On Apr 26, 11:45 am, Daniel B. [email protected] wrote:

in the Ruby standard library. It provides many more options for
finder = File::Find.new(:name => ‘*’, :path => ‘/etc’, :ftype =>
I just put out 0.2.0 today. This version adds “prune” and “perm”, as
well as fixes a bug where subdirectories weren’t being traversed.

Regards,

Dan- Hide quoted text -

  • Show quoted text -

Can find the file-find gem but cannot install it.

C:\Documents and Settings\Owner>gem query -n file-find -r

*** REMOTE GEMS ***

file-find (0.2.0, 0.1.1, 0.1.0)
A better way to find files

C:\Documents and Settings\Owner>gem install file-find
ERROR: While executing gem … (OpenURI::HTTPError)
404 Not Found

Regards

bbiker

On Apr 26, 10:00 pm, bbiker [email protected] wrote:

in the Ruby standard library. It provides many more options for
finder = File::Find.new(:name => ‘*’, :path => ‘/etc’, :ftype =>
I just put out 0.2.0 today. This version adds “prune” and “perm”, as
C:\Documents and Settings\Owner>gem query -n file-find -r

*** REMOTE GEMS ***

file-find (0.2.0, 0.1.1, 0.1.0)
A better way to find files

C:\Documents and Settings\Owner>gem install file-find
ERROR: While executing gem … (OpenURI::HTTPError)
404 Not Found

Strange. I just tried a remote install and it worked fine. Try again
later. Perhaps you’ll need to delete your gem cache.

Regards,

Dan

On 4/27/07, Daniel B. [email protected] wrote:

require ‘yaml’
Thanks for that, it works very well now.

ERROR: While executing gem … (OpenURI::HTTPError)
404 Not Found

Strange. I just tried a remote install and it worked fine. Try again
later. Perhaps you’ll need to delete your gem cache.

Works for me.

On Apr 27, 7:16 am, “Leslie V.” [email protected] wrote:

–gives me nothing.

file-find (0.2.0, 0.1.1, 0.1.0)

  • Show quoted text -

delete the “source cache” from c:\ruby\lib\ruby\gems\1.8\cache

sill no dice, different error message

C:\Documents and Settings\Owner>gem install file-find
Bulk updating Gem source index for: http://gems.rubyforge.org
ERROR: While executing gem … (Gem::GemNotFoundException)
Could not find file-find (> 0) in any repository

On Apr 27, 1:54 pm, bbiker [email protected] wrote:

–gives me nothing.

file-find (0.2.0, 0.1.1, 0.1.0)

  • Show quoted text -

Thanks all

Finally got it working!!!

On May 21, 2007, at 9:00 PM, rio4ruby wrote:

standard library. It provides many more options for controlling the

Woo! Thanks!

-Christopher

fyi.

require ‘alib’

alib.util.find ‘/tmp’, :follow => true

and much much more :wink:

-a

On Apr 24, 11:21 am, “Leslie V.” [email protected] wrote:

rule.find{ |file| puts file }

You can find install the file-find package as a gem, or grab the file
from the project page athttp://rubyforge.org/projects/shards/. You
can also find it on the RAA.

Woo! Thanks!
One question: what happens when you iterate over a directory you do
not have permission to read?Riothrows an exception and exits,
meaning the remaining files are skipped, which is not cool.

Rio does raise an exception when trying to read the contents of a
directory that one does not have permission to read. This behaviour is
due to the fact that Rio is a facade for the builtin class Dir – and
Dir raises an exception. Personally I think this behavior is
appropriate. Silently skipping unreadable directories is not always
desired

I tried to
provide an option to skip forbidden directories, but Rio is a bit
convoluted.

No additional option is required to get the desired behavior. Rio
allows control of which directories will be recursed into.

rio(‘adir’).recurse(:readable?).files(‘*.txt’) { … }

This will silently skip unreadable directories.

-Christopher