Regex 使用带有可选项的正则表达式查找
我尝试使用<代码>查找< /> >匹配中间的某些数字表示的几种可供选择的文件模式,但返回一个空列表。我的实际模式在中间有固定的开始和可变的数字。 可复制的例子。创建文件列表Regex 使用带有可选项的正则表达式查找,regex,shell,find,Regex,Shell,Find,我尝试使用查找< /> >匹配中间的某些数字表示的几种可供选择的文件模式,但返回一个空列表。我的实际模式在中间有固定的开始和可变的数字。 可复制的例子。创建文件列表 touch a10a a24b b12c a45d 使用下面的正则表达式从列表中选择a10a和a24b,结果输出为空 find . -regex '.*/a(10|45).*' 我希望这个问题应该很容易解决,但我找不到解决办法,也找不出答案。我错过了什么 系统:Ubuntu16.04这个想法是正确的,但是您需要键入正则表达式以用
touch a10a a24b b12c a45d
使用下面的正则表达式从列表中选择a10a
和a24b
,结果输出为空
find . -regex '.*/a(10|45).*'
我希望这个问题应该很容易解决,但我找不到解决办法,也找不出答案。我错过了什么
系统:Ubuntu16.04这个想法是正确的,但是您需要键入正则表达式以用于
查找。由于这里有备用运算符|
,因此需要启用ERE(扩展正则表达式)支持,您可以按如下操作。-regextype
允许您指定需求所需的regex风格。如果启用了贪婪匹配,/
部分也是可选的
find . -type f -regextype posix-extended -regex '.*/a(10|45).*'
从我的GNU findutils版本中,您可以从man
页面看到
-regextype类型
更改稍后在命令行上进行的-regex
和-iregex
测试所理解的正则表达式语法。当前实现的类型有emacs
(这是默认值)、posix awk
、posix basic
、posix egrep
和posix extended
请尝试指定-regextype awk
:
find . -regextype awk -regex '.*/a(10|45).*'
看来你用错了括号。它们应该是方形的,而不是圆形的
正确的命令应该是:
希望这有帮助
find . -regex '.*/a[10|45].*'