bash 4.1.2(2): 如何在for循环中应用正则表达式逆匹配?

bash 4.1.2(2): how to apply regex inverse matching in a for-loop?

我只想遍历不包含字符串 "unicredit" 的目录。鉴于此目录列表(位于 /tmp/scripts/bash/test/):

par_q
swx_i
swx_r
unicreditucispa_ams_b
unicreditucispa_ams_m
unicreditucispa_ber_b

我推出了以下单行:

for i in /tmp/scripts/bash/test/^((?!unicredit*).)*$; do echo FOUND $i; done

并期望得到以下输出:

FOUND par_q
FOUND swx_i
FOUND swx_r

但是却得到了这个错误:

-bash: syntax error near unexpected token `('

我试图用 \ 转义 some/all 括号,也试图用引号将正则表达式括起来,但没有解决问题。

我应该做哪些修改才能获得我想要的输出?

谢谢。

我建议:

shopt -s extglob # enable extglob
for i in /tmp/scripts/bash/test/!(*unicredit*); do echo "FOUND $i"; done