如何列出目录内容,包括点文件,但不包括。然后..?

人气:246 发布:2022-10-16 标签: file directory ruby dotfiles glob

问题描述

如何使Dir['*']包含点文件,例如.gitignore,但不包括...

即,有没有更好的办法:

`ls -A`.split "
"

可能与Dir?以下解决方案很接近,但都包括.&;..

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

因此,以下方法有效:

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

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

我想用它来修复Meteor Homebrew Formula的第9行。

推荐答案

不能使用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('.')

428