1

我只想遍历不包含字符串“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 `('

我试图用引号来转义一些/所有括号,\并尝试用引号将正则表达式括起来,但这并没有解决问题。

为了获得我想要的输出,我应该做哪些修改?

谢谢你。

4

1 回答 1

1

我建议:

shopt -s extglob # enable extglob
for i in /tmp/scripts/bash/test/!(*unicredit*); do echo "FOUND $i"; done
于 2020-04-19T13:54:05.800 回答