【问题标题】:How does "*.txt" regex work with ls command?“*.txt”正则表达式如何与 ls 命令一起使用?
【发布时间】:2013-02-18 07:50:06
【问题描述】:

我有一个文件名

文件

我正在运行这个命令

ls *.txt

理想情况下它应该匹配 .带有 'a' 和 * 的字符为零,但它返回的文件类似于

a.txt, b.txt

为什么这里 ls 正在治疗 .作为文字点,比正则表达式的任何字符都评分。

【问题讨论】:

    标签: regex shell unix ls


    【解决方案1】:

    它叫file globbing,而不是regular expression

    虽然两者都支持“?”、“*”等通配符,但它们有不同的方案。

    例如,glob 中的 "a*" 匹配任何以 "a" 开头的 filename,但在正则表达式中,它匹配任何包含 0 个或多个字母的 string “一个”。另一个区别是通配符“?”并且正则表达式中的“*”必须有一个前面的元素,而在通配符中是不必要的。

    至于你的最后一个问题,一个点“。”在 globbing 中没有特殊含义,它始终是字面上的点。要准确匹配通配符中的一个未知字符,可以使用“?”。

    【讨论】:

      【解决方案2】:

      它不是正则表达式,它是wildcard,其中* 表示任何字符,在.txt 之前,这就是为什么你会得到所有扩展名为.txt 的文件

      Files and directories - WildCard

      在 CP/M、DOS、Microsoft Windows 中指定文件名(或路径)时 和类 Unix 操作系统,星号字符 ("*") 替代零个或多个字符。在类 Unix 操作中 系统中,问号(“?”)只替换一个字符

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-02-27
        • 2021-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-08
        相关资源
        最近更新 更多