[ANN] file-find 0.1.0

D

Daniel Berger

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
 
L

Leslie Viljoen

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.
 
D

Daniel Berger

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
 
L

Leslie Viljoen

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

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
 
D

Daniel Berger

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.

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

Thanks,

Dan
 
D

Daniel Berger

Leslie said:
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.

Nevermind about the bug report. It's fixed in CVS. :)

Thanks,

Dan
 
D

Daniel Berger

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

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
 
B

bbiker

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
 
D

Daniel Berger

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

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
 
B

bbiker

Works for me.- Hide quoted text -

- 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
 
B

bbiker

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- Hide quoted text -

- Show quoted text -

Thanks all

Finally got it working!!!
 
R

rio4ruby

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
 
A

ara.t.howard

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


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


fyi.

require 'alib'

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

and much much more ;-)

-a
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

No members online now.

Forum statistics

Threads
473,774
Messages
2,569,598
Members
45,149
Latest member
Vinay Kumar Nevatia0
Top