Isso não tem nada a ver com mv
, mas é um recurso bash
, citando man bash
:
!(f1)
corresponde a f2 f3
no seu exemplo, então você está fazendo o seguinte:
mv -t f3/ f2 f3 f2
Para alcançar seu objetivo, você deve preferir:
mv -t f3/ !(f[13]) # or !(f1|f3)
Esta expressão corresponde a tudo, exceto f1
e f3
.
Isso também funciona com *
, ?
e […]
:
$ ls
e1 e2 e3 f1 f2 f3
$ ls !(e*|?[12])
f3