Hi,
I was wondering if there were a way to use Dir.glob to grab only
directories. After searching google for a bit I found ways to pull only
file listings, but couldn’t find one for just directories.
Currently, I’m using FileTest.directory?(dir) before running any
operations to test for a directory.
Mario Gr wrote:
Hi,
I was wondering if there were a way to use Dir.glob to grab only
directories. After searching google for a bit I found ways to pull only
file listings, but couldn’t find one for just directories.
Currently, I’m using FileTest.directory?(dir) before running any
operations to test for a directory.
Non-recursive
Dir.glob(’*’).select { |fn| File.directory?(fn) }
Recursive
Dir.glob(’**/*’).select { |fn| File.directory?(fn) }
On 03.07.2009 20:43, Andrea F. wrote:
Non-recursive
Dir.glob(’*’).select { |fn| File.directory?(fn) }
Recursive
Dir.glob(’**/*’).select { |fn| File.directory?(fn) }
For deep hierarchies it may be more efficient to use Find because you
avoid creating a large Array with lots of file names most of which you
do not want.
untested
require ‘find’
DOTS = %w{. …}
Find.find base_dir do |f|
next if DOTS.include?(File.basename(f)) || !test(?d, f)
puts “A dir which is not . or …: #{f}”
end
Kind regards
robert
On Jul 3, 2:09 pm, Mario Gr [email protected] wrote:
Hi,
I was wondering if there were a way to use Dir.glob to grab only
directories. After searching google for a bit I found ways to pull only
file listings, but couldn’t find one for just directories.
Currently, I’m using FileTest.directory?(dir) before running any
operations to test for a directory.
Trailing ‘/’:
Dir.glob(‘/‘).select { |fn| File.directory?(fn) }
Dir.glob(’**//’).select { |fn| File.directory?(fn) }
On Jul 3, 10:48 pm, Intransition [email protected] wrote:
Trailing ‘/’:
Dir.glob(‘/‘).select { |fn| File.directory?(fn) }
Dir.glob(’**//’).select { |fn| File.directory?(fn) }
Sorry, I meant:
Dir.glob(‘/‘)
Dir.glob(’**//’)
The trailing ‘/’ makes the select unnecessary.
Excellent. Thanks for the help.
This is cool - is there a way to grab only non-directories (or regular
files) ?
Thanks,
Jan