How do I get Dir[\'*\']
to include dotfiles, e.g., .gitignore
, but not .
and ..
?
I.e., is there a better way to do:
Here's a shorter version:
Dir['{.[^\.]*,*}']
You can't with Dir[], but you can with Dir.glob, which Dir[]
calls:
Dir.glob("*", File::FNM_DOTMATCH)
You can get rid of the .
& ..
easily:
Dir.glob("*", File::FNM_DOTMATCH).tap { |a| a.shift(2) }
But I think it’s probably best to stick with your original way:
Dir.glob("*", File::FNM_DOTMATCH) - %w[. ..]
(among other ways)
However, if you don’t require a more sophisticated glob than *
, Dir#children may be all you need (can always further filter/grep the results if more filtering is needed):
Dir.children('.')