2

我在 Ruby 目录搜索时遇到问题。我想实现 gitignore 文件之类的东西。当某些文件列在忽略文件中时,将不会对其进行搜索。

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

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

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

4

1 回答 1

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

如果你有多个 subs 过滤掉使用 Regexp.union,例如我所有的没有 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
于 2012-04-30T18:49:01.407 回答