Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 使用带有可选项的正则表达式查找_Regex_Shell_Find - Fatal编程技术网

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].*'