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

问题描述 投票:14回答:3

如何让Dir['*']包含dotfiles,例如.gitignore,但不包括...

即,有更好的方法:

`ls -A`.split "\n"

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

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

所以,以下工作:

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

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

我想知道这是为了修复Meteor Homebrew Formula的第9行。

ruby file glob dir dotfiles
3个回答
16
投票

你不能用Dir[],但你可以用Dir.globDir[]称之为:

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('.')

2
投票

这是一个较短的版本:

Dir['{.[^\.]*,*}']

0
投票

以下适用于Dir.glob

Dir.glob("{*,.?*}")
© www.soinside.com 2019 - 2024. All rights reserved.