Каталог списка Ruby с Dir ['*'], включая точечные файлы, но не. а также

Как я могу получитьDir['*'] включить точечные файлы, например,.gitignore, но нет. а также..?

Т.е. есть ли лучший способ сделать:

`ls -A`.split "\n"

возможно сDir? Следующие решения близки, но оба включают. & Амп;..:

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

Итак, следующие работы:

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

Но есть ли еще лучший способ сделать это?

Мне интересно, чтобы исправить строку 9Meteor Homebrew Formula.

 nemesv08 июл. 2012 г., 21:06
Как насчетDir.glob(“{*,.*}”)?
 Andrew Marshall08 июл. 2012 г., 21:03
Вы по существу отредактировали свой ответ, предложив решение между мной, начинающим отвечать и отвечающим & # x2026;:P
 ma11hew2808 июл. 2012 г., 21:13
@nemesv круто. Я просто заметил, что сам от чтенияDir::glob Ruby Documentation и добавил это к моему вопросу. Это также включает в себя. & Амп;.. записей.
 Andrew Marshall08 июл. 2012 г., 21:33
@MattDiPasquale у меня естьls связан сls -aFh и не делал\ls -A & # X2026; возгласы. Понял это после факта и удалил (неправильный) комментарий.
 ma11hew2808 июл. 2012 г., 21:27
@AndrewMarshallls -A исключает. & Амп;.. на OS X. Возможно, вы думаете оls -a?

Ответы на вопрос(3)

Вы не можете с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('.')
 ma11hew2808 июл. 2012 г., 21:26
tap это довольно крутой метод, хотя :) Но, хороший момент, я пока придерживаюсь разницы в массивах. Благодарю. :)
 08 июл. 2012 г., 21:20
@WayneConrad Да, я просто сделал это быстро, поскольку ОП отредактировал их вопрос в режиме быстрого огня. лучший способ, вероятно, разница в массиве... - %w[. ..], Регулярное выражение, необходимое для отклонения, кажется слишком плотным для того, что на самом деле несколько просто (не то, чтобы мой код был намного яснее относительно цели:P)
 08 июл. 2012 г., 21:47
@ Matt - О, разница в массиве намного лучше, чемreject.
 08 июл. 2012 г., 21:18
Лучше чемtap... возможноreject { |a| a =~ /^\.{1,2}$/ }, что является более информативным и также не зависит от порядка записей в каталоге.
 25 нояб. 2013 г., 20:18
Ну, это ответило на твой вопрос? Не забывайтеupvote/accept answers to your questions

Следующие работы сDir.glob:

Dir.glob("{*,.?*}")

Вот более короткая версия:

Dir['{.[^\.]*,*}']
 07 июл. 2017 г., 15:00
Это не соответствует файлу, такому как..foobar.

Ваш ответ на вопрос