0
0
PowershellHow-ToBeginner · 3 min read

How to Search in a File Using PowerShell Quickly

Use the Select-String cmdlet in PowerShell to search for text patterns inside files. For example, Select-String -Path 'filename.txt' -Pattern 'searchText' finds all lines containing 'searchText' in the file.
📐

Syntax

The basic syntax to search text in a file is:

  • Select-String -Path <file_path> -Pattern <text_to_search>

Here, -Path specifies the file or files to search, and -Pattern is the text or regex pattern to find.

powershell
Select-String -Path 'example.txt' -Pattern 'hello'
💻

Example

This example searches for the word 'error' inside a log file named log.txt. It shows all lines containing 'error' with their line numbers.

powershell
Select-String -Path 'log.txt' -Pattern 'error' | ForEach-Object { "Line $($_.LineNumber): $($_.Line)" }
Output
Line 3: Error: File not found Line 15: Critical error occurred
⚠️

Common Pitfalls

Common mistakes include:

  • Not specifying the correct file path, causing no results.
  • Using case-sensitive search unintentionally (default is case-insensitive).
  • Expecting output without formatting, which can be hard to read.

To fix case sensitivity, use -CaseSensitive switch. To search multiple files, use wildcards in -Path.

powershell
Select-String -Path '*.txt' -Pattern 'Error' -CaseSensitive
📊

Quick Reference

ParameterDescription
-PathFile or files to search (supports wildcards)
-PatternText or regex pattern to find
-CaseSensitiveMakes search case-sensitive
-AllMatchesReturns all matches in each line
-SimpleMatchTreats pattern as plain text, not regex

Key Takeaways

Use Select-String with -Path and -Pattern to search text in files.
By default, search is case-insensitive; add -CaseSensitive for exact case matching.
You can search multiple files using wildcards in the -Path parameter.
Format output with ForEach-Object to see line numbers and matched text clearly.
Remember to check file paths and patterns to avoid empty results.