Ruby:如何搜索所有文件并忽略一些不需要的文件?

时间:2012-04-30 08:43:35

标签: ruby

我在Ruby目录搜索时遇到了问题。我想像gitignore文件那样实施。 当某个文件列在忽略文件中时,将不会搜索它。

例如 这是一个目录列表,如果我想忽略/ bar(及其所有子文件)

/bar    (directory)
/bar/a.txt
/bar/b.txt
/foo
/foo/c.txt
/foo/d.txt

如果我使用 Dir["/**/*"] 将搜索每个文件。 我怎么才能只搜索foo目录?

1 个答案:

答案 0 :(得分:2)

Dir["/**/*"].reject{|f|f["/bar/"]}.each do |file|
  puts file
end
=>
/foo
/foo/c.txt
/foo/d.txt

如果您有多个子滤镜用于过滤使用Regexp.union,例如我的所有google驱动器文件没有subs \ docs和\ ruby​​

pattern = Regexp.union("C:/Users/peter/Google Drive/ruby", "C:/Users/peter/Google Drive/docs")
Dir["C:/Users/peter/Google Drive/**/**"].reject{|f|f[pattern]}.each do |file|
  p file
end