Skip to content

Select-String's wildcard matching for -Path should exclude directories #4820

@mklement0

Description

@mklement0

Select-String only supports file paths passed to -LiteralPath and (in resolved form) -Path.

As an aside: Even though the error message when you pass a directory path is technically correct, it could be more helpful:

Select-String: The file /path/to/dir cannot be read: Access to the path '/path/to/dir' is denied.

It would be convenient to automatically exclude directory matches from what a wildcard expression passed to -Path resolves to, given that they won't be processed anyway.

This would allow searching all files in a directory, whatever extension they have or whether they have one at all, with Select-String -Path * findme

On a side note: -Path's wildcard matching currently invariably excludes hidden files, so the only way to include hidden files in the search is to pipe from Get-Item / Get-ChildItem with -Force.

Current behavior

Setup: Create a directory that contains a subdirectory and a text file:

Push-Location (New-Item -Type Directory -Force (Join-Path ([io.path]::GetTempPath()) $PID))
$null = New-Item -Type Directory subd
'hi' > t.txt

Using wildcard expression * reports an error, because * also matches the directory, subd:

> Select-String -Path * hi
Select-String : The file .../subd cannot be read: Access to the path '.../subd' is denied.
...

t.txt:1:hi

Desired behavior

The directory wildcard match should be ignored.

> Select-String -Path * hi

t.txt:1:hi

Environment data

PowerShell Core v6.0.0-beta.6 on macOS 10.12.6
PowerShell Core v6.0.0-beta.6 on Ubuntu 16.04.3 LTS
PowerShell Core v6.0.0-beta.6 on Microsoft Windows 10 Pro (64-bit; v10.0.15063)
Windows PowerShell v5.1.15063.502 on Microsoft Windows 10 Pro (64-bit; v10.0.15063)

Metadata

Metadata

Assignees

Labels

Issue-BugIssue has been identified as a bug in the productResolution-FixedThe issue is fixed.WG-Cmdlets-Utilitycmdlets in the Microsoft.PowerShell.Utility module

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions