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