Можно ли создать глобус, который соответствует файлам в текущем каталоге и всем подкаталогам?
Вопрос
Для этой структуры каталогов:
.
|-- 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
Решение
Прошу прощения, если я пропустил реальную суть вопроса, но, если бы я использовал sh / bash / etc., то я бы, вероятно, использовал Найти чтобы выполнить свою работу:
find . -name '*.rb' -type f
Глобусы могут быть немного неприятными при использовании из скрипта и Найти гораздо более гибок.
Другие советы
В zsh, **/*.rb
работает
В самом Ruby:
Dir.glob('**/*.rb') perhaps?
Похоже, это невозможно сделать из bash
Если вы используете zsh
тогда
ls **/*.rb
приведет к правильному результату.
В противном случае вы можете перехватить ruby
переводчик (и, возможно, переводчиков с других языков)
ruby -e "puts Dir.glob('**/*.rb')"
Спасибо Крису и Гаюсу за ваши ответы.
Не связан с StackOverflow