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

On May 7, 2009, at 2:06 PM, JannaB wrote:

 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…

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

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”