private static List<string> FindFile(
string searchPath, string fileToFind, int maxDepth,
int currentDepth = 0) {
if (Path.GetFileName(searchPath) == fileToFind) {
return new List<string> { searchPath };
} else if (maxDepth == currentDepth) {
return new List<string>();
}
var foundFiles = new List<string>();
foreach (var file in Directory.GetFiles(searchPath)) {
if (Path.GetFileName(file) == fileToFind) {
foundFiles.Add(file);
}
}
foreach (var dir in Directory.GetDirectories(searchPath)) {
foundFiles.AddRange(FindFile(dir, fileToFind, maxDepth,
currentDepth: currentDepth + 1));
}
return foundFiles;
}