using static System.Console;
using System.Collections.Generic;
public static void Main() {
foreach (var file in FileUtil.GetFiles("c:\\", "aria2c.exe")) WriteLine(file);
public static class FileUtil {
public static IEnumerable<string> GetFiles(string root, string searchPattern) {
var pending = new Stack<string>();
while (pending.Count != 0) {
var path = pending.Pop();
next = Directory.GetFiles(path, searchPattern);
if (next != null && next.Length != 0) foreach (var file in next) yield return file;
next = Directory.GetDirectories(path);
foreach (var subdir in next) pending.Push(subdir);