2012-07-28 67 views
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 

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

我该怎么写这个方法?

回答

3

使用Dir::glob

Dir::glob("#{dir}/#{name}.*") 
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 
+0

嗯我可能会探索其他方法来做到这一点,如果我有时间但现在我用glob。 – MxyL 2012-07-28 20:57:32

+0

glob应该总是更快,因为它全部用C完成,无论我的方式是否有更多的ruby转换为C,但我只是猜测。不要认真对待 – 2012-07-28 21:17:58