1

我想写一个方法来做到这一点

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

该方法将返回一个包含前两个文件名的数组

我该如何写这个方法?

4

2 回答 2

3

使用Dir::glob.

Dir::glob("#{dir}/#{name}.*")
于 2012-07-28T01:01:18.573 回答
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
于 2012-07-28T02:11:57.913 回答