我有一个文件名
atxt
我正在运行此命令
ls * .txt
理想情况下应该匹配。使用'a'和*为零字符,但它返回的文件如
a.txt,b.txt
为什么这就是治疗。作为字面点,比正则表达式中的任何字符都要好。
答案 0 :(得分:7)
它被称为file globbing,而不是regular expression。
虽然两者都支持“?”,“*”之类的通配符,但它们有不同的方案。
例如,glob中的“a *”匹配任何以“a”开头的 filename ,但在正则表达式中,它匹配任何包含0或更多字母的字符串 “一个”。另一个区别是通配符“?”正则表达式中的“*”必须有一个前面的元素,而在globbing中它是不必要的。
至于你的上一个问题,一个点“。”在globbing中没有特殊意义,它总是一个字面点。要在globbing中准确匹配一个未知字符,可以使用“?”。
答案 1 :(得分:4)
它不是REGEX,它是wildcard,*
表示任何字符,.txt
之前,这就是为什么你得到所有扩展名为.txt
<的文件的原因/ p>
Files and directories - WildCard
在CP / M,DOS,Microsoft Windows中指定文件名(或路径)时 和类Unix操作系统一样,星号字符(“*”) 替换零个或多个字符。在类Unix操作 系统,问号(“?”)只替换一个字符