Bash 使用正则表达式查找数字匹配失败

Bash 使用正则表达式查找数字匹配失败

我正在find (GNU findutils) 4.7.0使用GNU bash, version 5.0.17

touch hello.32.world.txt
find . # works, output is: ./hello.32.world.txt
find . -regextype posix-extended -regex '.*hello\.32\.world\.txt'     # works
find . -regextype posix-extended -regex '.*hello\.[0-9]+\.world\.txt' # works
find . -regextype posix-extended -regex '.*hello\.\d+\.world\.txt'    # fails
find . -regextype posix-extended -regex '.*hello\.[\d]+\.world\.txt'  # fails

我是否缺少某种转义序列来\d+匹配一个或多个数字?

如果我输入find -regextype help,它会显示valid types are ‘findutils-default’, ‘ed’, ‘emacs’, ‘gnu-awk’, ‘grep’, ‘posix-awk’, ‘awk’, ‘posix-basic’, ‘posix-egrep’, ‘egrep’, ‘posix-extended’, ‘posix-minimal-basic’, ‘sed’。尝试这些也不起作用。

答案1

我认为d+在这种情况下不会起作用。在这种情况下,请尝试使用[[:digit:]]如下方法:

find . -regextype posix-extended -regex '.*hello\.[[:digit:]]+\.world\.txt'

或者使用[0-9]{1,2}匹配特定数量的数字;在本例中为 1 到 2 位数字:

find . -regextype posix-extended -regex '.*hello\.[0-9]{1,2}\.world\.txt'

相关内容