Вам не нужно повторно реализовывать это колесо.Рекурсивный глобус файла уже является частью базовой библиотеки.
Dir.glob('C:\Test_Directory\**\*.cs').each { |f| File.delete(f) }
Dir # glob перечисляет файлы в каталоге и может принимать подстановочные знаки.**
- это супер-подстановочный знак, означающий «сопоставлять что угодно, включая целые деревья каталогов», поэтому он будет соответствовать любому уровню по глубине (включая уровни «нет» по глубине: .cs
файлы в C:\Test_Directory
также будут совпадать с использованиемшаблон, который я предоставил).
@ kkurian указывает (в комментариях), что File#delete
может принять список, поэтому это можно упростить до:
File.delete(*Dir.glob('C:\Test_Directory\**\*.cs'))