Searching for text inside files with PowerShell finds which files contain a particular word or phrase, invaluable when you remember content but not the filename. Windows 11’s PowerShell searches file contents efficiently with a dedicated command.
The Command
Select-String -Path "C:\Docs\*.txt" -Pattern "budget"
What It Does
`Select-String` searches the contents of the files matching `-Path` for the text in `-Pattern`, here looking for “budget” in all text files in the Docs folder. It returns each matching line along with the file and line number where YYGACOR Login it was found, so you see exactly where the term appears across your files.
When You’d Use This
This is invaluable when you remember something a file contained but not which file or where, such as finding which document mentions a particular name, project, or figure. Searching contents rather than filenames locates information buried inside files, and the line-number results point you straight to where the term appears, saving you from opening files one by one to look.
Useful Variations
To search subfolders too, combine with `Get-ChildItem -Recurse` piped into `Select-String`. To make the search case-sensitive, add `-CaseSensitive`. To list only the filenames containing matches rather than each line, pipe to `Select-Object Path -Unique`. Patterns can use regular expressions for more flexible matching.
If It Doesn’t Work
If special characters in your search behave unexpectedly, remember the pattern is treated as a regular expression by default, so add `-SimpleMatch` for a literal search or escape the characters. To search subfolders, pipe `Get-ChildItem -Recurse` into `Select-String`. If searching many large files is slow, narrow the path to likely folders, and use `-CaseSensitive` only when case actually matters for your search.
Good to Know
By default the search is case-insensitive and treats the pattern as a regular expression, so special characters like periods have meaning; to match them literally, escape them or use `-SimpleMatch`. Searching many large files takes longer, so narrowing the path to likely folders speeds up finding what you need.
Putting It Together
The command shown may look dense at first, but it breaks down into clear parts once you have used it a few times. As part of working with output and building simple automation, this command is a building block you will reuse constantly. As you combine it with the other scripting basics here, small one-off commands grow into reusable scripts that save real time on repetitive work. Like anything in the terminal, the real value comes from trying it on your own system and adapting the variations above to what you actually need, so it is worth experimenting with in a safe, low-stakes situation before relying on it in a script or during troubleshooting. Keeping a note of the commands you find most useful, along with the variations that fit your workflow, turns scattered one-off tricks into a personal reference you can draw on whenever a similar task comes up again.