2

Rubyディレクトリの検索で問題が発生しました。gitignoreファイルのようにsthを実装したいと思います。一部のファイルが無視ファイルにリストされている場合、そのファイルは検索されません。

たとえば、/ 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

除外する複数のサブルーチンがある場合は、Regexp.union を使用します。たとえば、サブスク \docs および \ruby のないすべての Google ドライブ ファイル

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 に答える