I have a array of directories passed into my program. I want a new array
which is a list of all files in said directories (only one level deep is
necessary). N.B.:
- Each elements of the new array must be an absolute (full) path, or at
least relative to the cwd. (Assume all directories provided are also
absolute or relative to cwd)
- OS and preference agnostic: Especially, I do not know what directory
separator will be used (say, backward- or forward-slash) or whether
there will be a trailing directory separator in the directory path (say,
a trailing forward-slash).
Dir.foreach almost does what I want, but gives relative output instead
of absolute.
array_of_file_paths = Array.new
array_of_directory_paths.each do |directory_path|
???
end
On Sat, Oct 16, 2010 at 6:50 AM, Terry M. [email protected]
wrote:
a trailing forward-slash).
Posted via http://www.ruby-forum.com/.
Probably not the most elegant way, but this can give you some ideas:
irb(main):032:0> Dir[“"].each do |f|
irb(main):033:1 next if test ?f,f # skip the files
irb(main):034:1> puts Dir[”#{f}/*"].map {|x| File.expand_path(x)}
irb(main):035:1> end
You can loop around this collecting the subarrays and then flatten.
Jesus.
On 16.10.2010 06:50, Terry M. wrote:
a trailing forward-slash).
You can always use a forward slash in Ruby. Duplicate slashes are not
an issue either IIRC.
Dir.foreach almost does what I want, but gives relative output instead
of absolute.
array_of_file_paths = Array.new
array_of_directory_paths.each do |directory_path|
???
end
How about
array_of_file_paths = array_of_directory_paths.map do |dir|
Dir["#{dir}/", "#{dir}/."]
end.delete_if {|f| test ?d, f}
? Of course, if you do not need hidden files you can omit the second
arg to Dir[].
Kind regards
robert
On Oct 15, 11:50pm, Terry M. [email protected] wrote:
a trailing forward-slash).
Posted viahttp://www.ruby-forum.com/.
dir_paths.map{|d| Dir[ File.join( d, “*”) ] }.flatten.
select{|f| test ?f, f}
On Saturday, October 16, 2010 05:00:10 am Robert K. wrote:
there will be a trailing directory separator in the directory path (say,
a trailing forward-slash).
You can always use a forward slash in Ruby.
Also worth mentioning: I don’t know of any OSes Ruby supports which
don’t also
support a forward Slash. For example, while Windows typically uses
backslashes, it also supports forward slashes.