-1

我有一个文件名

文本文件

我正在运行这个命令

ls *.txt

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

a.txt,b.txt

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

4

2 回答 2

7

它称为文件通配符,而不是正则表达式

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

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

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

于 2013-02-18T07:53:42.180 回答
4

它不是正则表达式,它的通配符,其中*表示任何字符,.txt这就是为什么你要获取所有带有扩展名的文件.txt

文件和目录 - 通配符

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

于 2013-02-18T07:51:57.523 回答