如何在终端(CMD/PowerShell)中执行Windows索引文件搜索?
如何在终端(CMD/PowerShell)中执行Windows索引文件搜索?
刚好我之前折腾过这个问题,Windows原生就有对应macOS mdfind的索引搜索方案,分CMD和PowerShell两种场景给你说清楚:
PowerShell 方案
如果用PowerShell,你可以直接调用Windows的索引数据库来快速搜索,不用遍历整个磁盘,速度和mdfind类似。用以下命令:
Get-CimInstance Win32_IndexedFile | Where-Object {$_.FileName -like "*你的关键词*"} | Select-Object Name, Path
解释一下:
Get-CimInstance Win32_IndexedFile:获取所有被Windows索引服务收录的文件Where-Object:过滤出文件名包含目标关键词的文件Select-Object:只显示文件名和路径,避免输出太多冗余信息
如果你想搜索文件内容(而不仅仅是文件名),可以在上面的基础上加上内容过滤:
Get-CimInstance Win32_IndexedFile | Where-Object {$_.FileName -like "*你的关键词*" -and (Get-Content $_.Path | Select-String "内容关键词")} | Select-Object Name, Path
CMD 方案
CMD里也能实现基于索引的搜索,用wmic命令就行,这是Windows原生的WMI命令行工具:
wmic indexedfile where "FileName like '%你的关键词%'" get Name, Path
这个命令会直接从索引数据库里拉取匹配的文件,速度比普通的dir /s快很多。
如果需要更简洁的输出(去掉表头),可以加上/value参数:
wmic indexedfile where "FileName like '%你的关键词%'" get Name, Path /value
另外要注意:如果你的文件没被Windows索引服务收录,这些命令就搜不到。可以去「控制面板→索引选项」里查看和调整索引的范围,确保你要搜索的文件夹已经被加入索引。
备注:内容来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

