A straightforward utility to recursively search for text contained within files and directories.
I created a C# console application.
The actual recursive routine to search the directories and subdirectories recursively is quite straightforward:
foreach (var directory in Directory.GetDirectories(sDir))
{
foreach (var filename in Directory.GetFiles(directory))
{
using (var streamReader = new StreamReader(filename))
{
var contents = streamReader.ReadToEnd().ToLower();
if (contents.Contains(SearchText))
{
FilesFound.Add(filename);
}
}
}
DirSearch(directory);
}
Each directory is recursively searches as well as all the files contained within it.
Full code listing
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RecursiveSearch
{
internal class Program
{
private static List<string> FilesFound { get; } = new List<string>();
private const string SearchText = "get; set;";
private static void DirSearch(string sDir)
{
try
{
foreach (var directory in Directory.GetDirectories(sDir))
{
foreach (var filename in Directory.GetFiles(directory))
{
using (var streamReader = new StreamReader(filename))
{
var contents = streamReader.ReadToEnd().ToLower();
if (contents.Contains(SearchText))
{
FilesFound.Add(filename);
}
}
}
DirSearch(directory);
}
}
catch (System.Exception ex)
{
Console.WriteLine(ex.Message);
}
}
private static void Main(string[] args)
{
DirSearch(@"E:\CodeSamples\Archive");
Console.WriteLine("Files containing the word " + SearchText);
Console.WriteLine();
foreach (var file in FilesFound)
{
Console.WriteLine(file);
}
}
}
}
So to search for all files containing the text “get; set” within the directory “E:\CodeSamples\Archive” gives the following output:
