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

为何通配符"*.*"与" . "可匹配无扩展名文件"a"?

关于通配符匹配无扩展名文件的两个常见问题解答

问题1:为何通配符*.*能够匹配没有扩展名的文件?

这个得从DOS时代的老规矩说起——Windows的通配符逻辑基本照搬了DOS这套设计。

在早期DOS的文件命名规则里,文件名被拆成文件名主体和扩展名两部分,用点号.分隔,而扩展名完全可以是空的。当我们用*.*作为通配符时,两个*的作用分别是:

  • 第一个*:匹配任意长度的文件名主体(连空字符串都能匹配)
  • 第二个*:匹配任意长度的扩展名(同样包括空字符串)

所以对于像a这种无扩展名的文件,它的扩展名部分是空的,刚好能被第二个*匹配上。说白了,*.*本质上是“匹配所有带点号(哪怕点号后面啥也没有)的文件”,而无扩展名的文件就相当于“文件名主体+点号+空扩展名”,自然就被纳入匹配范围了。

后来Windows虽然支持更长的文件名和更灵活的命名规则,但这套通配符匹配逻辑被保留了下来,所以现在用*.*搜索时,依然能看到所有无扩展名的文件。

问题2:某目录下存在文件a,当使用*.作为搜索模式时,会匹配到该文件,但此文件无扩展名且文件名不含点号,请问原因是什么?

(这里我猜你可能是输入时的小失误,应该是*.而不是空格加点点——毕竟空格加点点的模式根本匹配不到不带空格的a文件)

还是DOS遗留的规则在起作用:*.这个模式的核心含义就是“匹配文件名主体任意,但扩展名是空的文件”。

在系统的文件匹配逻辑里,无扩展名的文件会被默认标记为“扩展名部分为空”,哪怕文件名里没有显式的点号。当你用*.搜索时,系统会自动把这类文件和“文件名主体+点号+空扩展名”的模式做匹配——因为空扩展名刚好符合*.里“点号后面没有内容”的要求,所以文件a就被匹配到了。

简单说,*.就是系统专门用来筛选无扩展名文件的通配符模式之一。


内容的提问来源于stack exchange,提问作者Jerry Chou

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:58:18