If there are a large number of, for example, saved Web Pages (mht,htm,html,pdf) stored in compressed ZIP or RAR files, it can be very difficult to locate any particular one.
In any such directory containing a number of these files this (module) procedure will search each individual file name for simple text strings, listing both the
source RAR/ZIP file and the individual file name containing the string. The relevant RAR/ZIP can then be subsequently opened in the usual way.
The first step will find any lines containing the simple selected pattern (which can be anywhere in the file name). Each successful find will then be split into 2 headings: 'Source' and 'File'.
Note that there may be the odd occasion where a 'non-readable' character in the returned string slips through the net!
The results can be displayed with 'Out-GridView' by use of the '-Table' switch and then filtered more extensively if desired.

PowerShell
Edit|Remove
   Get-ChildItem $path -include '*.rar','*.zip' | 
      Select-String -SimpleMatch -Pattern $find | 
         foreach-Object ` 
            -begin { 
                $container = @{} 
                $folder = $path.Replace('*','') 
                $lines = @{} 
                $regex = '(?s)^(?<zip>.+?\.(?:zip|rar)):(?:\d+):.*\\(?<file>.*\.(mht|html?|pdf))(.*)$' 
                Write-Host "Searching for '$find' - please wait... (Use CTRL+C to quit)"  
            } ` 
            -process { 
                $_ = $_ -replace '/','\' 
                if ( $_ -match $regex ) { 
                   $container[$matches.zip] +=1   #Record the number in each. 
                   $source = $matches.zip -replace [regex]::Escape($folder) 
                   $file   = $matches.file 
                   $file = $file -replace '\s+',' '         #Single space words. 
                   $file = $file -replace '\p{S}',' '   #Remove some 'Dingbats'. 
                   if ($table) { 
                      $key = "{0:D4}" -$count 
                      $lines["$key $source"] = $file       #Create a unique key. 
                   } 
                   else { 
                      Write-Host "[$source] $file" 
                   } 
                   $count++  
                } 
            } ` 
            -end {  
                $total = "in $($container.count) file(s)."  
                $title = "Folder '$($path.Replace('\*',''))' contains $($count) matches for '$find' $total" 
                if ($table -and $count -gt 0) {         
                   $lines.GetEnumerator() |  
                      Select-Object @{name = 'Source';expression = {$_.Key.SubString(5)}}, 
                                    @{name = 'File'  ;expression = {$_.Value}} | 
                         Sort-Object File | 
                            Out-GridView -Title $title 
                } 
                else { 
                   if ($count -eq 0) { 
                      $title = "Folder '$($path.Replace('\*',''))' contains no matches for '$find'."    
                   } 
                   Write-Host $title 
                }  
            } 
} #End function.