我需要在包含大量文件的磁盘中搜索任何文件名与几百个单词中的一个或多个匹配的文档(PDF、DOC、DOCX、XLS 等)。
内置搜索工具速度很慢,并且无法很好地处理许多搜索词。有人知道有什么工具/程序可以帮到你吗?
答案1
根据 mnmnc 的建议,我编写了一个 Powershell 脚本,似乎可以解决问题。虽然速度很慢,但它能给我想要的结果。
$phrases = ("*Wildcard*,*separated*,*array*,*of*,*search*,*terms*")
Remove-Item .\results.txt
foreach ($p in $phrases){
$results = @(Get-ChildItem -Recurse -Path 'E:\myPath\' -Filter "$m" | where{$_.Extension -match "doc|docx|pdf|txt|xls|xlsx"} | Select-Object Fullname)
if($results.count -ne 0){
$m + " " + $results.length >> ".\results.txt"
$results >> ".\results.txt"
"
" >> ".\results.txt"
}
}
这会循环遍历短语并查看是否有任何允许扩展名的文件与搜索短语匹配。结果被放入数组中,如果数组有任何元素,则将短语、结果数和文件名打印到文本文件中。
那个 foreach 循环可能非常昂贵,如果有更好的方法来实现它我不会感到惊讶,但我只是让它在后台运行,所以我不介意它花一段时间。