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

在PowerShell中如何列出无扩展名文件?替代CMD的dir *.

解决PowerShell中dir *.返回空列表的问题

你遇到的这个问题,本质是PowerShell和CMD对通配符*.的解析逻辑不一样。在CMD里dir *.能匹配无扩展名的文件(比如你提到的foo),但PowerShell直接跑dir *.会返回空,下面给你几个实用的解决办法:

方法1:使用-Filter参数(最贴近CMD的行为)

PowerShell里的dir其实是Get-ChildItem的别名,这个命令有个-Filter参数,它是交给底层Windows文件系统来处理过滤的,规则和CMD完全一致。所以用这个命令就能得到和CMD里dir *.一样的结果:

Get-ChildItem -Filter *.

如果不想包含.和..这两个默认目录项,可以加上-File参数,只返回文件:

Get-ChildItem -Filter *. -File

方法2:通过Where-Object筛选无扩展名的项

如果你需要更灵活的筛选逻辑,可以先获取当前目录的所有项,再用Where-Object过滤掉带有扩展名的文件/目录:

Get-ChildItem | Where-Object { $_.Extension -eq '' }

用PowerShell的简写语法会更紧凑:

gci | ? { !$_.Extension }

同样,加上-File参数就能只保留文件,排除目录。

为什么直接用dir *.不行?

在PowerShell中,dir *.里的*.是作为-Path参数的通配符,PowerShell自身的通配符规则里,*.表示文件名以.结尾的项——而我们常见的无扩展名文件(比如foo)名字并不以.结尾,自然匹配不到任何结果。而CMD的*.规则是专门匹配没有扩展名的文件,这就是两者核心的差异点。

内容的提问来源于stack exchange,提问作者P-Gn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:02:49