2012-07-28 68 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