Globbing ne fonctionne pas de cette façon sauf si vous activez extglob
coquille opt. Au lieu de cela, je recommande d'utiliser find
:
find . -maxdepth 1 -not -name '<NAME>' -or -name '<NAME>' -delete
avant d'exécuter cette commande avec -delete
assurez-vous que la sortie est correcte
Méthode avec paramètres par défaut et sans procs externes :
for f in *; do [[ $f =~ ^file[12]$ ]] || echo "$f"; done
La syntaxe glob étendue que vous essayez d'utiliser est désactivée par défaut; vous devez l'activer séparément dans chaque script où vous souhaitez l'utiliser.
shopt -s extglob
Les scripts ne doivent pas utiliser ls
bien que j'imagine que vous l'utilisiez simplement comme espace réservé ici.