Если это только префикс, попробуйте String#start_with?
:
require 'set'
legal_paths = Set['A/B/C', 'A/D/E', 'A/F/G']
files = Dir.glob('**/system.log').select do |fd|
fd.start_with?(*legal_paths)
end
Почему бы не использовать тот факт, что вы можете указать эти префиксы в глобусе?
legal_paths = ['A/B/C', 'A/D/E', 'A/F/G']
files = Dir.glob("{#{legal_paths.join(',')}}/**/system.log")
Обратите внимание, что если пользователь вводит legal_paths
, вышеприведенное может быть небезопасным, поскольку пользователь может перейти к родительским каталогам, используя ..
.