private void DoSearch(List <string> results, string path, Regex regex, bool subFolders, bool dirs, bool files) { Nfs3FileHandle dir = GetDirectory(path); foreach (Nfs3DirectoryEntry de in _client.ReadDirectory(dir, true)) { if (de.Name == "." || de.Name == "..") { continue; } bool isDir = de.FileAttributes.Type == Nfs3FileType.Directory; if ((isDir && dirs) || (!isDir && files)) { string searchName = (de.Name.IndexOf('.') == -1) ? de.Name + "." : de.Name; if (regex.IsMatch(searchName)) { results.Add(Utilities.CombinePaths(path, de.Name)); } } if (subFolders && isDir) { DoSearch(results, Utilities.CombinePaths(path, de.Name), regex, subFolders, dirs, files); } } }