我有一个如下所示的目录结构:
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)'
您可能还想参考常用表达。