2013-03-03 35 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