如何让Dir['*']
包含dotfiles,例如.gitignore
,但不包括.
和..
?
即,有更好的方法:
`ls -A`.split "\n"
也许与Dir
?以下解决方案很接近,但都包括.
和..
:
Dir.glob('*', File::FNM_DOTMATCH)
Dir['{.*,*}']
所以,以下工作:
Dir.glob('*', File::FNM_DOTMATCH) - ['.', '..']
但是,还有更好的方法吗?
我想知道这是为了修复Meteor Homebrew Formula的第9行。
你不能用Dir[]
,但你可以用Dir.glob
,Dir[]
称之为:
Dir.glob("*", File::FNM_DOTMATCH)
你可以轻松摆脱.
和..
:
Dir.glob("*", File::FNM_DOTMATCH).tap { |a| a.shift(2) }
但我认为最好坚持原来的方式:
Dir.glob("*", File::FNM_DOTMATCH) - %w[. ..]
(以及其他方式)
但是,如果你不需要比*
更复杂的glob,Dir#children
可能就是你所需要的(如果需要更多的过滤,可以总是进一步filter
/ grep
):
Dir.children('.')
这是一个较短的版本:
Dir['{.[^\.]*,*}']
以下适用于Dir.glob
:
Dir.glob("{*,.?*}")