Il globbing non funziona in questo modo a meno che non abiliti extglob
conchiglia opz. Invece, consiglio di usare find
:
find . -maxdepth 1 -not -name '<NAME>' -or -name '<NAME>' -delete
prima di eseguire questo comando con -delete
assicurati che l'output sia corretto
Metodo con impostazioni predefinite e senza processi esterni:
for f in *; do [[ $f =~ ^file[12]$ ]] || echo "$f"; done
La sintassi glob estesa che stai tentando di utilizzare è disattivata per impostazione predefinita; devi abilitarlo separatamente in ogni script in cui vuoi usarlo.
shopt -s extglob
Gli script non dovrebbero usare ls
anche se immagino che tu lo stia usando solo come segnaposto qui.