Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PowerShell进行区分大小写的文件搜索?_Powershell_Search_Case Sensitive - Fatal编程技术网

如何使用PowerShell进行区分大小写的文件搜索?

如何使用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) 文件

查找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:\ | 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