Removing part of a String

I want to get the names of all files in a given directory. When I employ the Dir method, it returns the name of the files with the pathname I invoked it with:

      allfiles = Dir["public/images/icons/**"]

So to remedy this, I try to sub out the directory prefixing the string, as:

      for fil in allfiles do              render :text => fil.sub( "public/images/icons/", "" )       end

Yet even this doesn't remove the directory name. Clearly I am doing something stooopid, but just don't see it. Can someone please have a look and see what I am missing here? Thanks you, Janna

File.basename("/home/gumby/work/ruby.rb") #=> "ruby.rb" File.basename("/home/gumby/work/ruby.rb", ".rb") #=> "ruby"

Dir.entries("public/images/icons") should do nicely...

Rick Lloyd wrote:

Dir.entries("public/images/icons") should do nicely...

And in any case:

fil = "public/images/icons/hello.ico" p fil.sub("public/images/icons/", "")

--output:-- "hello.ico"

JannaB wrote:

I want to get the names of all files in a given directory. When I employ the Dir method, it returns the name of the files with the pathname I invoked it with:

      allfiles = Dir["public/images/icons/**"]

So to remedy this, I try to sub out the directory prefixing the string, as:

      for fil in allfiles do              render :text => fil.sub( "public/images/icons/", "" )       end

Yet even this doesn't remove the directory name. Clearly I am doing something stooopid, but just don't see it. Can someone please have a look and see what I am missing here? Thanks you, Janna

require 'pathname' allfiles = Pathname.new('/opt') allfiles.children.map{|a| a.basename.to_s}

or

Dir.chdir("/opt") do allfiles = Dir["**"] end