如何让Dir['*']
包含点文件,例如.gitignore
,而不是.
和..
?
即,有更好的方法吗?
`ls -A`.split "\n"
也许是Dir
?以下解决方案很接近,但都包括.
& ..
:
Dir.glob('*', File::FNM_DOTMATCH)
Dir['{.*,*}']
所以,以下工作:
Dir.glob('*', File::FNM_DOTMATCH) - ['.', '..']
但是,还有更好的方法吗?
我想知道如何解决Meteor Homebrew Formula的第9行。
答案 0 :(得分:15)
您不能使用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[. ..]
(以及其他方式)
但是,如果您不需要比*
更复杂的全局,Dir#children
可能就是您所需要的(如果结果是filter
/ grep
,则可以需要更多过滤):
Dir.children('.')
答案 1 :(得分:2)
这是一个较短的版本:
Dir['{.[^\.]*,*}']
答案 2 :(得分:0)
以下适用于Dir.glob
:
Dir.glob("{*,.?*}")