我可以plus
使用以下命令在目录中搜索包含该术语的文件:
dir "*plus*" /s
但是,我需要修改命令以搜索名称包含术语的文件plus OR vest
。在 Windows 资源管理器中,我可以通过输入以OR
-连接的搜索词来执行此操作plus OR vest
。如何使用 Windows 命令行完成此操作?
答案1
dir
接收模式列表所以你可以使用多个通配符模式
dir /s *plus* *vest*
你可能想要使用dir /b /s *plus* *vest*
更合理的输出
或者你也可以使用以下方法过滤结果findstr
dir /b /s | findstr /i "plus vest"
findstr
默认会查找以空格分隔的单词,并返回匹配的行plus
,或vest
./i
用于不区分大小写地匹配,如果您不需要,可以将其删除。但这种方法将是慢得多因为所有文件路径都必须打印到管道
请注意,这还将查找名为*plus*
或 的文件夹中的所有文件*vest*
。您可以删除/b
,但 的输出dir /b /s | findstr /i "plus vest"
会非常混乱,因为您不知道文件位于哪个文件夹中
查找(plus
或vest
)但不hoodie
使用
dir /b /s *plus* *vest* | findstr /i /v hoodie
但这也会排除名为 的文件夹中的文件*hoodie*
。再次删除/b
有帮助,但输出可能无用。对于如此复杂的事情,您应该改用 PowerShell。事实上,我避免在 cmd 中编写任何新内容,PowerShell 明显更好,您不必学习 cmd 的遗留怪癖。在 PowerShell 中,可以这样做
Get-ChildItem -Recurse -Include "*plus*", "*vest*" | Where-Object { $_.Name -notlike "*hoodie*" }
或者更短的别名版本:
ls -R -I "*plus*", "*vest*" | where { $_.Name -notlike "*hoodie*" }
答案2
使用 Powershell,您可以使用以下命令:
Get-ChildItem -Path "C:\Path\To\Your\Files\*" -Include "*plus*", "*vest*"
如果您已经在路径中:
Get-ChildItem -Path .\* -Include "*plus*", "*vest*"