posix 扩展正则表达式中的变量扩展

Variable expansion within posix-extended regex

我一直在尝试将用户定义的文件扩展名添加到正则表达式中,但没有成功。这是我的脚本:

#!/bin/bash

echo -n "Enter which file extension are you looking for: "

read fExt

find . -maxdepth 1 -type f -regextype posix-extended -regex '^./q[0-9]{1,2}[a-z]?.\"$fExt\"$'

我要查找的文件名类似于

q1.txt
q22b.pdf
q3c.JPG

这个版本不起作用,所以我一直在使用多个 ext1|ext2|... 案例,这显然不是模块化的。如何将 $fExt 添加到我的 -regex 输入中?首先有可能吗,还是有更简单的方法来解决这个问题?谢谢!

您使用单引号的方式阻止 $fExt 被展开。

假设 bash-like shell,您似乎想要的正则表达式可以指定如下:

"^q[0-9]{1,2}[a-z]?\.$fExt$"

$'^q[0-9]{1,2}[a-z]?\.'"$fExt"'$'