文件名匹配,扩展名不重要

时间:2012-07-28 00:36:36

标签: ruby

我想写一个执行此操作的方法

def search_for_filenames(dir, name)
    # goes to the directory and returns a list of files that match
    # the given name, regardless of extension
end

例如,如果名称是test,我的目录包含以下内容

test.png
test.txt
something_else.dat

该方法将返回包含前两个文件名

的数组

我该如何编写此方法?

2 个答案:

答案 0 :(得分:3)

使用Dir::glob

Dir::glob("#{dir}/#{name}.*")

答案 1 :(得分:0)

它会比Dir::glob更快但实际上有时可能需要更多时间才能运行。无论如何,这就是我所做的。但请使用Dir::glob

def search_for_filenames(dir, name)
  result_files = []
  Dir.new(dir).each do |file|
    if /^#{name}\.\w+$/.match file
      result_files << file
      return result_files if result_files.size == 2
    end
  end
  result_files
end