如何使用PowerShell进行区分大小写的文件搜索?
查找caps.txt 我想确保它只会找到 CAPS.txt(或例如CAPS901918.whatever) 我已尝试找到方法将筛选器管道化到以下表达式:如何使用PowerShell进行区分大小写的文件搜索?,powershell,search,case-sensitive,Powershell,Search,Case Sensitive,查找caps.txt 我想确保它只会找到 CAPS.txt(或例如CAPS901918.whatever) 我已尝试找到方法将筛选器管道化到以下表达式: Get-ChildItem -Path C:\ -Filter CAPS* 或者在收到结果后抑制输出,但我没有发现任何结果。尝试将管道获取Childitem发送到Where Object,如下所示: { $_.What_I_just_said_to_filter_on -like [A-Z] } 这里是like语法(感谢FLGMwt) 文件
Get-ChildItem -Path C:\ -Filter CAPS*
或者在收到结果后抑制输出,但我没有发现任何结果。尝试将管道
获取Childitem
发送到Where Object
,如下所示:
{ $_.What_I_just_said_to_filter_on -like [A-Z] }
这里是like语法(感谢FLGMwt)
文件系统提供程序的筛选器不区分大小写,但您可以通过管道将其发送到:
Get-Childitem -Path C:\ | Where-Object {$_.Name -clike "CAPS*"}
这将查找不包含小写字母的文件。如果您匹配大写字母,它将适用于任何至少有1个大写字母的文件,并且仍然可以包含小写字母。您可以使用regex选项进行此操作
Where{-NOT ($_.BaseName -cmatch "[a-z]")}
或
这是我编写的一个很好的小powershell应用程序,如果您感兴趣,它可以搜索并将找到的项目输出到桌面上的日志文件中
| Where{ $_.BaseName -cmatch "^[A-Z]+"}
注意,
-match
采用正则表达式。或者,如果您喜欢语法,则-clike
强制区分大小写。使用-cmatch
进行区分大小写的匹配。如果您想查看子目录,请不要忘记-Recurse
-Force
将抓取隐藏文件和系统文件。还可以在提升的提示符下运行此命令,否则使用-Recurse
可能会出现很多错误。
| Where{ $_.BaseName -match "(?-i)^[A-Z]+") }
| Where{ $_.BaseName -cmatch "^[A-Z]+"}
# Creates Log File
function Create-MyLog()
{
Clear-Host
New-Item -Path "C:\Users\$env:USERNAME\Desktop\" -Name "MyLogFile.txt" -ItemType file -Force
Clear-Host
Smart-Search
}
# Gather Search And Execute
function Smart-Search()
{
Clear-Host
$LogFilePath = "C:\Users\$env:USERNAME\Desktop\"
$TestInput = Read-Host 'What Would You Like To Search'
$TestSearch = $TestInput + "*"
$MyLogFile = ($LogFilePath + "MyLogFile.txt")
Set-Location "C:\"
$itemSum = Get-ChildItem -Recurse -ErrorAction SilentlyContinue
Foreach($itemInst in $itemSum)
{
if(($itemInst.Name -clike $TestSearch) -eq $true)
{
$itemInst.FullName | Out-File -LiteralPath $MyLogFile -Append
}
elseif($itemInst -eq $null)
{
Write-Host "Search Error On searchInst Is Null"
}
}
Search-Again
}
# Ask If User Wants To Search Again
function Search-Again()
{
$userAnswer = Read-Host 'Would You Like To Search Again? y/n'
switch($true)
{
($userAnswer -eq "y"){Smart-Search};
($userAnswer -eq "n"){};
default{Write-Host "Invalid Response"; Search-Again};
}
}
Create-MyLog