2013-03-03 34 views
0

我不知道Ruby,但看起來很酷,所以我正在嘗試使用它。如何從Rake中的FileList中篩選和獲取子列表?

當我使用FileList["*.cpp"]選擇文件時,有時我想從中篩選出子列表。

對於源輸入文件,

somefile.txt 
a.cpp 
MySome.cpp 
Another.cpp 
MySomeValue.cpp 

newlist = FileList["*.cpp"].sublistByFiltering("*Value.cpp").sublistByFiltering("My*") 

而且newlist僅示出MySomeValue.cpp

我該怎麼做?

更新

方法sublistByFiltering是我虛構的一個,和我正在尋找目前耙的功能。

回答

1

我不知道你在哪裏想出了這個sublistByFiltering方法,但我認爲你要找的是在多個FileList項目的內部數組之間進行交集。

a = FileList['*.cpp'].to_a 
b = FileList['*Value.cpp'].to_a 
a & b #=> files that are in both `a` and `b` 

但是,如果你知道所有的模式了前面,你永遠只能將它們結合起來,你可以通過正則表達式的文件清單構造函數:

FileList[/My.*Value\.cpp/] 
+0

我可以做迴文件清單從內部陣列? – Eonil 2013-03-03 06:55:03

+1

當然,因爲數組中的任何條目都只是非全局文件名,所以您可以將整個數組作爲參數傳遞給FileList.new!例如。 'FileList.new(files_I_lurve)' – coreyward 2013-03-03 07:05:50

+0

順便說一句,您可能想查看FileList文檔的其餘部分。頂部的簡介解釋了課堂背後的基本理念,所有的方法(以及它們的個人來源)都可以在那裏獲得。 http://rake.rubyforge.org/classes/Rake/FileList.html – coreyward 2013-03-03 07:07:36