fileglob

A file globbing library.

What

fileglob is a glob library that uses gobwas/glob underneath
and returns only matching files or direcories, depending on the configuration. Due to this great foundation, fileglob supports:

  • Asterisk wildcards (*)
  • Super-asterisk wildcards (**)
  • Single symbol wildcards (?)
  • Character list matchers with negation and ranges ([abc], [!abc], [a-c])
  • Alternative matchers ({a,b})
  • Nested globbing ({a,[bc]})
  • Escapable wildcards (\{a\}/\* and fileglob.QuoteMeta(pattern))

By also building on top of spf13/afero, a range of alternative filesystems as well as custom filesystems are supported. For example, an in-memory filesystem can be used (fileglob.Glob("/a/b", fileglob.WithFs(afero.NewMemMapFs()))):

Why

gobwas/glob is very well implemented: it has
a lexer, compiler, and all that, which seems like a better approach than most
libraries do: regex.

It doesn't have a Walk method though, and we needed it
in a couple of places.
So we decided to implement it ourselves, a little bit based on how
mattn/go-zglob works.

GitHub