Я пытаюсь найти строку в тысячах файлов с разными шаблонами. Мой Regex работает нормально и возвращает то, что я хочу. Но проблема в производительности. Поиск всех файлов занимает более 8 часов (более 100 000 файлов). Можно ли как-нибудь оптимизировать это?
Моя цель - идентифицировать все sql объекты (с / без имени схемы) в любых файлах / проектах vb / c # / powershell.
Мое регулярное выражение и комбинации, которые я пытаюсь найти, находятся по ссылке ниже Regex
Я хочу идентифицировать строки в этом формате в любом файле
[dbo].xyz
dbo.[xyz]
[dbo].[xyz]
"dbo.xyz"
"[dbo].xyz"
"dbo.[xyz]"
"[dbo].[xyz]"
И ниже приведен мой фрагмент PowerShell
get-childitem -Path "$( $SearchPath )" -Force -recurse | Where-Object { ($_.Extension -eq '.bas') -or ($_.Extension -eq '.cls') -or ($_.Extension -eq '.sql') -or ($_.Extension -eq '.cs')-or ($_.Extension -eq '.csproj')-or ($_.Extension -eq '.vb') -or ($_.Extension -eq '.cshtml') -or ($_.Extension -eq '.ps1') -or ($_.Extension -eq '.psm1')} `
| Select-String -Pattern """(\[)?($( $SchemaName ))?(\])?(\.)?(\[)?[^a-zA-Z_\s\@\$\/,-]$( $ObjectName )(\])?[^a-zA-Z.//-]""?" `
| select-string "^\s*$", "^\s*'", "^\s*#", "^\s*//", "^\s*/\*", "^\s*\*.*(?:\*/)?\s*$", 'Headers' -NotMatch `
| Select Path, LineNumber
Любая помощь приветствуется. Заранее спасибо.