Globbing no funciona de esa manera a menos que habilites extglob
shell opt. En su lugar, recomiendo usar find
:
find . -maxdepth 1 -not -name '<NAME>' -or -name '<NAME>' -delete
antes de ejecutar este comando con -delete
asegúrese de que la salida sea correcta
Método con configuración predeterminada y sin procesos externos:
for f in *; do [[ $f =~ ^file[12]$ ]] || echo "$f"; done
La sintaxis global extendida que intenta usar está desactivada de forma predeterminada; tienes que habilitarlo por separado en cada script donde quieras usarlo.
shopt -s extglob
Los scripts no deben usar ls
aunque me imagino que lo estabas usando simplemente como un marcador de posición aquí.