How do I get Dir['*'] to include dotfiles, e.g., .gitignore, but not . and ..?
I.e., is there a better way to do:
`ls -A`.split "\n"
perhaps with Dir? The following solutions are close but both include . & ..:
Dir.glob('*', File::FNM_DOTMATCH)
Dir['{.*,*}']
So, the following works:
Dir.glob('*', File::FNM_DOTMATCH) - ['.', '..']
But, is there still a better way to do this?
I'm wondering this to fix line 9 of a Meteor Homebrew Formula.
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('.')
Here's a shorter version:
Dir['{.[^\.]*,*}']
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With