Можно ли создать глобус, который соответствует файлам в текущем каталоге и всем подкаталогам?

StackOverflow https://stackoverflow.com/questions/44481

  •  09-06-2019
  •  | 
  •  

Вопрос

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

.
|-- 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')"

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top