|
This has been mentioned several times. I will give it try. Thanx
"A little time, a little trouble, your better day"
Badfinger
|
|
|
|
|
Roll your own. Make it do exactly what you want. You can't expect someone else to have already done it for you.
|
|
|
|
|
Maybe I'm missing some nuance in your post, but have you tried finest?
|
|
|
|
|
I use Notepad++ for searching in a specific file - so I use Notepad++ for searching in all files.
It lets me select between case sensitive and insensitive search.
It lets me search for whole words only.
It lets me search for either plain strings, strings with control characters escaped by backslashes, or a regular expession.
It lets me filter files by name and/or extension, with a list of alternatives (such as "*.txt;*.log;*.cs")
It lets me select files in a single directory or also in subdirectories.
It lets me replace the found string with another text in all matching files.
It lets me navigate the directory tree graphically for selecting the directory (tree) to search.
It handles files in various encodings, including UTF-8 and different line ending conventions.
It lets me fetch two (or more) files with hits, and compare them (with plugin, but a standard one that should always be installed).
The hit list is very well organized: It shows a single line for each hit; you can open that file on that line by clicking it. You can temporarily hide all hits in one (or all) files. You can delete files of no interest from the hit list, while continuing to inspect the remaining ones.
It is quite fast.
But most of all: Using the same tool, with the same dialog fields, for searching a directory tree as the one you use for searching in the one text file you are editing means that there is no new tool to learn, no new command syntax or specification format. It is familiar and friendly.
This of course is if np++ already is your standard text file editor. If it is not, my question is "Why not?"
|
|
|
|
|
Notepad++ also handles multi byte, BOM, BOMless, etc whereas cmd’s FIND /s and FINDSTR /s only work with single byte characters.
|
|
|
|
|
Wow, Did not know Notepad++ did this. Thanx, Trønderen and Englebart. I'll try it
"A little time, a little trouble, your better day"
Badfinger
modified 8-Jan-23 19:56pm.
|
|
|
|
|
If you have Linqpad -- LINQPad - The .NET Programmer's Playground[^] -- (and what self-respecting C# dev doesn't ) then I got your back on this:
Here's a great little findInFiles script I wrote a few years ago when i was frustrated because I couldn't search inside of source code (*.cs) to find specific text items I needed.
Keep in mind I wrote this very quickly bec I was needing to search in files for specific text.
It ignores case and finds all matches ( you can add a parameter to handle this).
it will prompt you for a few items:
1. Directory you want to search (searches all subdirs)
2. text you want to search for.
3. file pattern you want to search against *.*, *.cs, *.txt, etc.
that's it. It'll go through them all and give you some results.
Yes, it's just bruteforce but it works and it's relatively fast and you'll see updated results as it finds the text.
void Main()
{
Console.WriteLine ("Enter the path you want to search.");
string searchPath = Console.ReadLine();
Console.WriteLine(string.Format("Searching : {0}", searchPath));
DirectoryInfo DirInfo = new DirectoryInfo(searchPath);
Console.Write("Search Term: ");
string searchTerm = Console.ReadLine().ToUpper();
Console.WriteLine(searchTerm);
Console.WriteLine("Enter the file pattern you want search against.");
string filePattern = Console.ReadLine();
try
{
var files = DirInfo.EnumerateFiles(filePattern,SearchOption.AllDirectories);
foreach (var f in files)
{
string [] allLines = File.ReadAllLines(f.FullName);
int lineCount = 1;
bool foundInFile = false;
foreach (string line in allLines)
{
if (line.ToUpper().Contains(searchTerm))
{
if (!foundInFile)
{
Console.WriteLine("searching {0}", f.FullName.ToUpper());
foundInFile=true;
}
Console.WriteLine(string.Format("FOUND : {0} {1}",lineCount, line));
}
lineCount++;
}
if (foundInFile)
{
Console.WriteLine("#############################");
Console.WriteLine();
}
}
}
finally
{
}
}
modified 8-Jan-23 12:41pm.
|
|
|
|
|
Wow ! thanks ...
May I suggest you publish this as a Tip/Trick, or flesh iit out a little bit and publish as article.
I can "see" adding an Enum that would filter on either lower or upper case matches, or both.
cheers, Bill
«The mind is not a vessel to be filled but a fire to be kindled» Plutarch
modified 9-Jan-23 2:29am.
|
|
|
|
|
That's a great idea and I will try to get around to it. Thanks
|
|
|
|
|
Be careful - if your account doesn't have permission to read any of the folders in the search path, the script will fail at the first one. In .NET Framework, there's no way to make a SearchOption.AllDirectories search skip folders you don't have access to.
If you're using .NET Core 2.1 or later (including .NET 5/6/7/...), you can use the EnumerationOptions[^] class with the IgnoreInacessible property set to true to resolve this:
EnumerationOptions options = new()
{
RecurseSubdirectories = true,
IgnoreInaccessible = true,
};
var files = DirInfo.EnumerateFiles(filePattern, options);
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
That's a great tip. thanks for adding.
|
|
|
|
|
I'm using Total Commander for that
|
|
|
|
|
Supports search by ANSI, ASCII, UTF8, UTF16, Office XML, EPUB, HEX and REGEX.
|
|
|
|
|
I've been using Agent Ransack for over 15 years and it's still a great piece of software for searching both by file name and within files.
“That which can be asserted without evidence, can be dismissed without evidence.”
― Christopher Hitchens
|
|
|
|
|
Several 3rd party tools I keep available include "Windows Grep", grepWin and SearchMonkey. SearchMonkey and grepWin are my favorites. Both support regular expression searches.
|
|
|
|
|
GREP AND GREPWIN I HAVE USED BUT NOT WITHOUT ISSUES. SEARCH MONKEY i WILL TRY. I TRIED RANSACK. PRETTY GOOD.
WINDOWS DOES FINDSTR COMMAND BUT ONLY AT COMMAND PROMPT LEVEL. I KNOW THERE ARE MANY WAYS, MY ANGST IS THAT WINDOWS HAS NOT DONE THEIR OWN VERY WELL. I DON'T WANT TO HAVE TO THINK TOO MUCH EVERY TIME I USE IT. IT SHOULD BE INTUITIVE.
"A little time, a little trouble, your better day"
Badfinger
|
|
|
|
|
If you have Git for Windows installed already then you have the POSIX ports of grep and find for Windows already installed, it's just most likely they are not in your PATH to avoid name clashes. You can use it outside of Git Bash in CMD or PowerShell as it's just a Windows port.
C:\Program Files\Git\usr\bin\find.exe
C:\Program Files\Git\usr\bin\grep.exe
If you don't have Git for Windows installed, install it. No developer should be without Git these days.
Also, WSL2 is great, if you want to use a full-on environment. Better than the old Cygwin days. I say this as a dude that used to be all about PowerShell. If you're going to take the time to learn something may as well learn something cross platform that you can use on a Mac as well.
Jeremy Falcon
modified 9-Jan-23 16:06pm.
|
|
|
|
|
Personally, I download a copy of ripgrep and enjoy using the fastest, most concurrent text search utility you're going to find (at the moment, anyway).
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Not really my thing but with Windows 10 (before?) you can install a unix Bash shell. I think that comes with grep.
|
|
|
|
|
What was the mummy's favorite music?
Wrap.
"A little time, a little trouble, your better day"
Badfinger
|
|
|
|
|
Today I finally got a NXP PCAL6534 34-bit GPIO expander working. I couldn't before. It wasn't showing up as an I2C device, even when I scanned the bus. I solved the problem, but the evaluation board is just funky.
Furthermore I just spent the last 4 hours (mostly) poring over a datasheet for because nobody wrote a driver for it, aside from one for linux which is actually weird considering it's not really meant for full fledged computers.
I got it working, and ported a stepper motor driver library to work with it, such that you can tie most of the motor's lines to the expander, and you only need one for each attached directly to the MCU (because it's time sensitive.)
All in about 4.5 hours today, which is over twice as long as I like to work in a day, but I had a lot to do. From what I understand of my pace, and just generally what I know of work like this is I did it very quickly so I feel pretty good about it, especially given it involved datasheets, which usually make me cross-eyed, and then the finicky and obscure hardware on top of it.
Why we didn't go with a more common expander I will probably never know. I'm not a hardware engineer.
To err is human. Fortune favors the monsters.
|
|
|
|
|
You are even better than a hardware engineer.
You are a hardware/software engineer.
Pretty good one.
You have a bigger picture.
A good thing.
"A little time, a little trouble, your better day"
Badfinger
|
|
|
|
|
Why?
Because the marketing department wanted to say: “cutting edge technology using NXP PCAL6534 34-bit GPIO expander”
|
|
|
|
|
Funny thought, but I know that's not how this happened.
I know the guy that made the decision. I could ask him, but he probably just went with NXP because he's used to them, and this is what they had. He's not up on the software end of things, so the fact that NXP doesn't do a good job (apparently) of providing source code to work with their hardware is almost certainly lost on him.
It's not a big deal - if anything it means more work for me, and that's not always a bad thing - not when I'm already ahead anyway.
To err is human. Fortune favors the monsters.
|
|
|
|
|
Wordle 568 5/6
⬛⬛🟨⬛🟨
⬛⬛🟩🟨🟨
🟨⬛🟩🟨⬛
🟨🟨🟩⬛⬛
🟩🟩🟩🟩🟩
|
|
|
|