我的理解是find遍历整个文件路径来定位字符串。因此,我无法理解为什么下面的正则表达式不起作用。
find / -regex '^sysconfig$'
应返回/etc/sysconfig。即使是像find / -regex 'bin'
这样的简单正则表达式也不会返回任何内容。
我是不是错过了一些很简单的东西?
只需将正则表达式更改为,
find / -regex '.*sysconfig$'
或
find / -regex '.*/sysconfig$'
因为-regex
查找表达式匹配整个名称,包括当前目录的相对路径。因此.*
首先将匹配前面的字符。
据我所知,在no正则表达式实现中,正则表达式^sysconfig$
会匹配以下内容吗:
blah blah sysconfig
^
和$
是起始字符串和结束字符串锚,意味着只有当测试字符串恰好为sysconfig
,并且两侧都没有其他文本时,测试字符串才会匹配。事实上,它们甚至不需要,因为-regex
匹配整个字符串而不是子字符串。
如果您希望所有文件都以sysconfig
结尾,只需使用:
find / - regex '.*sysconfig'
如果希望任何目录中的所有名为sysconfig
的文件,请使用'.*/sysconfig'
。