从变量中查找regex参数

时间:2012-03-14 06:25:01

标签: regex bash find

我想创建使用find的脚本:

find . -regex $1 | while read prom; do
    echo $prom
done

我想从选项中获取正则表达式,但我无法使其正常工作。我尝试使用一些正则表达式(例如“。*(txt)§”)直接而不是1美元,但它没有帮助。我忘了使用find?

1 个答案:

答案 0 :(得分:3)

你有支架吗?尝试使用.*txt$作为你的正则表达式(在你的问题中不是那个有趣的“部分符号”标记)。

如果您确实需要括号(作为捕获括号?),则必须执行.*\(txt\)$,因为find的默认正则表达式类型是Emacs样式,其中()是< em> literal ,必须转义才能在正则表达式中进行解释。

您也可以执行find . -regextype posix-extended -regex '.*(txt)$',并注意-regextype posix-extended将正则表达式更改为扩展的POSIX正则表达式,其中() 特殊字符({{1}通常会给出一条错误消息,列出您可以为find -regextype asdf)提供的所有选项。

另外,在bash脚本中,您应该在引号中包围regextype

$1

(除非find . -regex "$1" 已经输入了引号,在这种情况下忽略了该建议。)