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.