find -regex 无法识别 \d 数字

find -regex 无法识别 \d 数字

我有一个如下所示的目录结构:

processor0/10
processor0/10.1
processor0/10.2
processor1/10
processor1/10.1
processor1/10.2
 ...etc...
processor7/10
processor7/10.1
processor7/10.2

我想“找到”所有 10.1 或 10.2 的目录。

以下工作:

$ find . -type d -regextype posix-egrep -regex '\./processor[0-9]*/10\.(1|2)'

但这不行:

$ find . -type d -regextype posix-egrep -regex '\./processor\d*/10\.(1|2)'

我不确定为什么,因为 egrep 应该理解 \d 是一个数字。有人能解释一下吗?

这是 64 位 Ubuntu 上的命令行查找 - 具体来说 (GNU findutils) 4.4.2

问候,玛德琳

答案1

这是因为\d在 Perl 兼容正则表达式中表示十进制数字字符,而 不受支持find

您可以使用角色类别[:digit:]

find . -type d -regextype posix-egrep -regex '\./processor[[:digit:]]*/10\.(1|2)'

您可能还想参考常用表达

相关内容