Public/Utilities/Find-SubtitleFile.ps1

function Find-SubtitleFile {
    <#
    .SYNOPSIS
        Recursively finds subtitle files in a directory.
    .DESCRIPTION
        Searches for .srt, .ass, and .ssa files. Optionally filters by format or pattern.
    .PARAMETER Path
        Root directory to search. Defaults to current directory.
    .PARAMETER Format
        Filter by format: 'SRT', 'ASS', 'SSA', or 'All'.
    .PARAMETER Pattern
        Wildcard pattern to match filenames (e.g., '*english*').
    .PARAMETER Recurse
        Search subdirectories recursively.
    .EXAMPLE
        Find-SubtitleFile -Path 'D:\Movies' -Recurse
    .EXAMPLE
        Find-SubtitleFile -Format SRT -Pattern '*english*' -Recurse
    #>

    [CmdletBinding()]
    [OutputType([System.IO.FileInfo[]])]
    param(
        [string] $Path = '.',

        [ValidateSet('SRT', 'ASS', 'SSA', 'All')]
        [string] $Format = 'All',

        [string] $Pattern = '*',

        [switch] $Recurse
    )

    $extensions = switch ($Format) {
        'SRT' { @('.srt') }
        'ASS' { @('.ass') }
        'SSA' { @('.ssa') }
        'All' { @('.srt', '.ass', '.ssa') }
    }

    $splat = @{
        Path    = $Path
        Filter  = $Pattern
        File    = $true
        Recurse = $Recurse.IsPresent
    }

    Get-ChildItem @splat | Where-Object {
        $extensions -contains $_.Extension.ToLower()
    }
}