我想创建使用find的脚本:
find . -regex $1 | while read prom; do
echo $prom
done
我想从选项中获取正则表达式,但我无法使其正常工作。我尝试使用一些正则表达式(例如“。*(txt)§”)直接而不是1美元,但它没有帮助。我忘了使用find?
答案 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"
已经输入了引号,在这种情况下忽略了该建议。)