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"'$'
我一直在尝试将用户定义的文件扩展名添加到正则表达式中,但没有成功。这是我的脚本:
#!/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"'$'