Salakhetdinov Shamil
mcp2004 at mail.ru
Sat Jun 23 12:42:42 CDT 2012
Hi Gustav --
Yes, I have used this utility code several times already to quickly find code files...
Thank you.
-- Shamil
Sat, 23 Jun 2012 19:18:49 +0200 от "Gustav Brock" <gustav at cactus.dk>:
> Hi Shamil
>
> I just tested this in LINQPad and it runs fine. Could be very useful.
>
> /gustav
>
>
> >>> Salakhetdinov Shamil <mcp2004 at mail.ru> 19-06-12 22:14 >>>
> Hi All --
>
> Here is a code snippet from my LINQPad utility code snippets collection to look for a text string in all the files of a directory (including subdirectories)
> I know there exists a grep (but I can't find it here on my system) utility or windows explorer advanced search but the sample code (see P.S.) seems to be working much quicker(?),
> also this code snippets is not a bad example of modern C# development techniques - try:
>
> Here are the results for my real life case - I have just needed to find a text in 3765 .cs files.
>
> 1. first run took 30 seconds
> start: 19.06.2012 23:36:06
> end: 19.06.2012 23:36:34
>
> 2. subsequent runs
> Total files count
> 3765
>
> Start Time
> 19.06.2012 23:59:39
>
> e:\projects\code\TestSolution\Test.BLL\Reports Import\TestApiAgent.cs
> e:\projects\code\TestSolution\Test.Core\Settings\General Settings\GeneralSettings.cs
>
> Total files length
> 39905062
>
> End Time
> 19.06.2012 23:59:42
>
> Elapsed time (ms)
> 2483.1421
>
> Processing speed (chars/ms)
> 16070.3900111073
>
> Thank you.
>
> -- Shamil
>
> P.S. Code snippet
>
> // Search for a text string in all the *.cs files of a directory
> // including its subdirectories
> //
>
> // folder to search code files in
> string folderName = @"e:\projects\code";
> // search string
> string searchFor = "test.com";
>
> var folder = new System.IO.DirectoryInfo(folderName);
> var files = folder.GetFiles("*.cs", SearchOption.AllDirectories);
>
> files.Length.Dump("Total files count");
>
> var startTime = DateTime.Now;
> startTime.Dump("Start Time");
>
> int totalLength = 0;
> files.AsParallel().ForAll(x =>
> {
> Interlocked.Add(ref totalLength,
> (int)(new System.IO.FileInfo(x.FullName)).Length);
> string code = System.IO.File.ReadAllText(x.FullName, Encoding.UTF8);
> if (code.IndexOf(searchFor,StringComparison.InvariantCultureIgnoreCase)>-1)
> System.Console.WriteLine(x.FullName);
> });
>
>
> totalLength.Dump("Total files length");
> var endTime = DateTime.Now;
> endTime.Dump("End Time");
>
> (endTime - startTime).TotalMilliseconds.Dump("Elapsed time (ms)");
> (totalLength / (endTime - startTime).TotalMilliseconds).Dump("Processing speed (chars/ms)");
>
> _______________________________________________
> dba-VB mailing list
> dba-VB at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/dba-vb
> http://www.databaseadvisors.com
>
>