Можно ли создать глоб, который соответствует файлам в текущем каталоге и всех подкаталогах? - PullRequest
1 голос
/ 04 сентября 2008

Для этой структуры каталогов:

.
|-- README.txt
|-- firstlevel.rb
`-- lib
    |-- models
    |   |-- foo
    |   |   `-- fourthlevel.rb
    |   `-- thirdlevel.rb
    `-- secondlevel.rb

3 directories, 5 files

Глобус будет соответствовать:

firstlevel.rb 
lib/secondlevel.rb 
lib/models/thirdlevel.rb
lib/models/foo/fourthlevel.rb

Ответы [ 4 ]

4 голосов
/ 05 сентября 2008

Извиняюсь, если я пропустил реальную суть вопроса, но, если бы я использовал sh / bash / etc., То я, вероятно, использовал бы find , чтобы сделать работу:

find . -name '*.rb' -type f

Глобусы могут быть немного неприятными при использовании из скрипта, а find гораздо более гибок.

2 голосов
/ 04 сентября 2008

В зш, **/*.rb работает

1 голос
/ 04 сентября 2008

В самом Ruby:

Dir.glob('**/*.rb') perhaps?
0 голосов
/ 04 сентября 2008

Похоже, что это невозможно сделать с bash

Если вы используете zsh, то

ls **/*.rb

даст правильный результат.

В противном случае вы можете захватить интерпретатор ruby (и, вероятно, других языков)

ruby -e "puts Dir.glob('**/*.rb')"

Спасибо Крису и Гаю за ваши ответы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...