Поскольку вы ищете определенный файл в каждом из каталогов, просто позвольте Dir#[]
найти их для вас, полностью избавляя от необходимости проверять каталог.Кроме того, IO#puts
примет массив, поместив каждый элемент в новую строку.Это избавит от еще одного уровня вложенности.
File.open('Data/Networks/to_process.txt', 'w') do |out|
Dir['Data/Networks/*/list.txt'] do |file|
dir = File.basename(File.dirname(file))
out.puts File.readlines(file).map { |l| "#{dir}/#{l.split.first}" }
end
end