One of my team members got a requirement to find files by name using PowerShell while working on an automation project. In this tutorial, I will show you different methods to find files by name in PowerShell.
To find a file by name using PowerShell, you can utilize the Get-ChildItem cmdlet combined with the -Name parameter for a basic search, or add -Recurse to search through all subdirectories. For example, Get-ChildItem -Recurse -Name “myDocument.txt” will search for a file named “myDocument.txt” throughout the file system. Use wildcards with -Filter for broader searches, such as Get-ChildItem -Recurse -Filter “*.txt” to find all text files.
Find Files by Name in PowerShell
There are various PowerShell cmdlets for searching files by name. Let’s check each method with a complete script and examples.
1. Using Get-ChildItem
PowerShell provides the Get-ChildItem cmdlet to search for files by name in a directory. It can search through directories and list all files and folders that match the specified criteria.
Example 1: Basic Search
To find a file by name in the current directory using PowerShell, you can use the following command:
Get-ChildItem -Name "MyFile.txt"Example 2: Recursive Search
To search for a file recursively through all subdirectories, you can add the -Recurse parameter with the Get-ChildItem cmdlet:
Get-ChildItem -Recurse -Name "MyFile.txt"Example 3: Using Wildcards
If you’re unsure about the exact name or want to find files with similar names, you can use wildcards:
Get-ChildItem -Recurse -Name "*partialname*"Example 4: Filtering by Extension
To find all files with a specific extension using PowerShell, you can filter the results:
Get-ChildItem -Recurse -Filter "*.txt"2. Using Get-Item
The Get-Item cmdlet is another way to find a file by name using PowerShell. It is generally used when you know the exact path of the file.
Here is an example.
Get-Item "C:\Path\To\Your\File\filename.txt"3. Using Select-String
For searching inside files for specific content and returning the file names that contain that content, Select-String is your cmdlet.
Here is the complete PowerShell script.
Get-ChildItem -Recurse | Select-String -Pattern "searchTerm" | Select-Object -Unique Path4. Advanced Filter using Where-Object
You can also find files by name using the where-object in PowerShell.
Here is an example to get a particular file by name.
Get-ChildItem -Recurse | Where-Object { $_.Name -eq "filename.txt" }If you want to find only .txt files, then run the below PowerShell script.
Get-ChildItem -Recurse | Where-Object { $_.Extension -eq ".txt" }Error Handling While Searching Files
When searching for files, you may encounter errors. You can handle them using try-catch blocks in the PowerShell script.
Here is an example:
try {
Get-ChildItem -Path "C:\Invalid\Path" -ErrorAction Stop
} catch {
Write-Error "An error occurred: $_"
}For repetitive tasks, you can create a custom function to find files by name. Here is a custom PowerShell function that you can reuse.
function Find-FileName {
param (
[string]$FileName
)
Get-ChildItem -Recurse -Name $FileName
}Conclusion
In this PowerShell tutorial, I have explained different methods to find files by name in PowerShell. One of the easiest methods to achieve this is by using the Get-ChildItem PowerShell cmdlet.
You may also like:
- Delete Contents of Folder in PowerShell
- Count Files in a Folder Using PowerShell
- Rename Files with Date in PowerShell
- Encrypt a File with a Password in PowerShell
Bijay Kumar is an esteemed author and the mind behind PowerShellFAQs.com, where he shares his extensive knowledge and expertise in PowerShell, with a particular focus on SharePoint projects. Recognized for his contributions to the tech community, Bijay has been honored with the prestigious Microsoft MVP award. With over 15 years of experience in the software industry, he has a rich professional background, having worked with industry giants such as HP and TCS. His insights and guidance have made him a respected figure in the world of software development and administration. Read more.