Могу ли я пройти по каталогам с символическими ссылками в Ruby с помощью символа "**"? - PullRequest
21 голосов
/ 11 декабря 2008

В Ruby Dir.glob("**/*.rb") (например) не пересекает символьные каталоги. Можно ли получить ** для прохождения символических ссылок?

Я использую два драгоценных камня, которые находят файлы таким образом, но мне нужны они для просмотра файлов в каталоге с символическими ссылками.

Ответы [ 2 ]

36 голосов
/ 27 апреля 2010

Умный и хитрый подход Джонатана великолепен, он способен пробиться сквозь орды символических ссылок всего лишь несколькими звёздочками, махахаха. Тем не менее, он имеет неприятный побочный эффект, что не возвращает непосредственные дочерние совпадения. Улучшенная версия может быть:

Dir.glob("**{,/*/**}/*.rb")

Который (в моих тестах) будет следовать одной символической ссылке и возвращать непосредственных детей.

12 голосов
/ 11 декабря 2008

Обычно не с рекурсивным поиском из-за риска бесконечных циклов.

Но, это обсуждение может помочь :

Dir.glob("**/*/**/b") будет следовать символической ссылке до одного раза.

...