2013-04-16 2 views
0

Как написать glob, который будет соответствовать файлам, только если одноуровневые подпапки? У меня есть такая структура: src/items/item-name/file.extruby ​​glob для одноуровневых подпапок

И мне нужен глобус, который будет соответствовать только этим файлам, а не src/items/item-name/subfolder/file.ext. Я попытался использовать src/blocks/*/*.*, но он все еще смотрит в подпапки.

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

+0

Если вы просто попробуете: 'files = Dir ['src/items /*/*.*']' –

ответ

1

В Ruby, вы можете поймать все файлы по образцу *.* во всех вложенных папках src/items следующим образом:

Dir.glob('src/items/*/*.*').select({ |f| File.file?(f) }).each do|file| 
    puts file 
end 

Он не копать глубже (если вы не используете ** это не сделайте это рекурсивно), и он рассматривает файл только с помощью File.file? (в случае имени подпапки имя файла будет соответствовать шаблону *.*).

+1

Получите 'if' из тела с' Dir.glob ('src/items/*/* . * '). select {| f | File.file? (F)} .each do ... ' – dbenhur

+0

@dbenhur Thx, отличный рефактор :). – toch

+0

Спасибо, я попробую еще раз, но я думаю, что использовал тот же самый glob, что и вы, но мне все равно пришлось проверять глубину файла, анализируя его путь. Я должен дважды проверить ваше предложение! – Anton

Смежные вопросы