“* .txt”正则表达式如何与ls命令一起使用?

时间:2013-02-18 07:50:06

标签: regex shell unix ls

我有一个文件名

  

atxt

我正在运行此命令

  

ls * .txt

理想情况下应该匹配。使用'a'和*为零字符,但它返回的文件如

  

a.txt,b.txt

为什么这就是治疗。作为字面点,比正则表达式中的任何字符都要好。

2 个答案:

答案 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操作   系统,问号(“?”)只替换一个字符