我用这个查找表达式做错什么了?
; touch ook ooks
; find . -name 'ook' -or -name 'ooks' -type f
./ook
./ooks
; find . -name 'ook[s]?' -type f
[returns nothing]
; echo $?
0
您将正则表达式与shell搜索模式混淆了。
?在外壳中表示任何单个字符。
?在regexp中,前一个字符(或子模式)是可选的。
尝试:
find . -regex '.*ooks?' -type f
从查找手册页:
-regex模式 文件名与正则表达式模式匹配。这是 整个路径上的匹配项,而不是搜索。例如,要匹配 名为“ ./fubar3”的文件,可以使用正则表达式“。* bar”。或 “。* b。* 3”,但不包含“ f。* r3”。 默认情况下,find可以理解的正则表达式是Emacs正则表达式,但是可以 使用-regextype选项进行更改。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句