Globbing funktioniert so nicht, es sei denn, Sie aktivieren extglob Schale opt. Stattdessen empfehle ich die Verwendung von find :
find . -maxdepth 1 -not -name '<NAME>' -or -name '<NAME>' -delete
bevor Sie diesen Befehl mit -delete ausführen Stellen Sie sicher, dass die Ausgabe korrekt ist
Methode mit Standardeinstellungen und ohne externe Prozesse:
for f in *; do [[ $f =~ ^file[12]$ ]] || echo "$f"; done
Die erweiterte Glob-Syntax, die Sie verwenden möchten, ist standardmäßig deaktiviert. Sie müssen es in jedem Skript, in dem Sie es verwenden möchten, separat aktivieren.
shopt -s extglob
Skripte sollten ls nicht verwenden obwohl ich mir vorstelle, dass Sie es hier nur als Platzhalter verwendet haben.