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 > >