带有Dir ['*']的Ruby列表目录,包括dotfiles但不包括。和

时间:2012-07-08 18:58:21

标签: ruby file glob dir dotfiles

如何让Dir['*']包含点文件,例如.gitignore,而不是...

即,有更好的方法吗?

`ls -A`.split "\n"

也许是Dir?以下解决方案很接近,但都包括.& ..

Dir.glob('*', File::FNM_DOTMATCH)
Dir['{.*,*}']

所以,以下工作:

Dir.glob('*', File::FNM_DOTMATCH) - ['.', '..']

但是,还有更好的方法吗?

我想知道如何解决Meteor Homebrew Formula的第9行。

3 个答案:

答案 0 :(得分:15)

您不能使用Dir[],但可以使用Dir.globDir[]来电:

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("{*,.?*}")