public static FPath Directories(this FPath p, Predicate <FPath> predicate, bool recursive, bool shortcutRecursion) { if (!recursive || !shortcutRecursion) { return(p.Directories(predicate, recursive)); } var result = new FPath(); var dirQueue = new Queue <FPath>(); dirQueue.Enqueue(p); while (dirQueue.Count > 0) { var dir = dirQueue.Dequeue(); foreach (var childDir in dir.Directories(predicate, false)) { dirQueue.Enqueue(childDir); result = result.Add(childDir); } } return(result); }
static FPath Directories(this FPath p, string searchPattern) => p.Directories(searchPattern, false);