You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell实现Bash中`ls | grep foo.sh`的文件名过滤功能?

实现PowerShell中类似ls | grep "foo.sh"的文件名匹配功能

要在PowerShell中筛选文件名包含指定内容的文件,无需搜索文件内容,直接针对文件名过滤即可,以下是几种实用方法:

方法1:直接使用Get-ChildItem的通配符参数

Get-ChildItem本身支持通配符匹配文件名,这是最简洁的方式:

  • 匹配名称中包含foo.sh的文件(显示完整文件信息):
    Get-ChildItem "*foo.sh*"
    
  • 只输出匹配的文件名(不显示其他属性):
    Get-ChildItem -Name "*foo.sh*"
    
  • 精确匹配名为foo.sh的文件:
    Get-ChildItem "foo.sh"
    

方法2:通过管道结合Where-Object过滤

如果需要更灵活的匹配(比如正则表达式),可以用Where-Object对文件对象的Name属性进行过滤:

  • 正则匹配文件名:
    Get-ChildItem | Where-Object { $_.Name -match "foo.sh" }
    
  • 通配符匹配(和方法1的通配符逻辑一致):
    Get-ChildItem | Where-Object { $_.Name -like "*foo.sh*" }
    

补充说明

你之前用Select-String会搜索文件内容,是因为这个命令的作用就是在文件内容中查找匹配字符串,而非针对文件名筛选。

内容的提问来源于stack exchange,提问作者E.rick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 15:40:31