Simplesmente porque não existe um operador &(...)
em bash
. bash
implementa apenas um subconjunto de ksh
padrões com extglob
. Aqui você quer:
grep -Fwn Foo /**/src/**/!(Foo).@(h|cpp)
Com ksh93
, você pode usar &
desta maneira:
grep -Fwn Foo /**/src/@(*.@(h|cpp)&!(Foo*))
zsh
tem um operador e não com extendedglob
:
grep -Fwn Foo /**/src/(*.(h|cpp)~Foo*)