Es ist kein regulärer Ausdruck, an dem die Verwirrung eintritt. Stattdessen wird ein System namens "Globbing" verwendet - siehe:
$ man 7 glob
Anstelle von [az] müssen Sie [[: lower:]] als solche verwenden:
$ ls -d [[:lower:]]*
In Bash habe ich es versucht
ls [a-z]*
und erwartet, alle Dateien mit Dateinamen aufzulisten, beginnt mit einem kleinen Fallalphabet. Aber warum werden die Dateien, deren Name mit Großbuchstaben beginnt, ebenfalls angezeigt?
>ls [a-z]* D e >
Falls erforderlich, die bash-Version:
bash --version GNU bash, Version 4.1.5 (1) -release (i486-pc-linux-gnu) Copyright (C) 2009 Free Software Foundation, Inc. Lizenz GPLv3 +: GNU GPL Version 3 oder höher http: // gnu .org / Lizenzen / gpl.html
This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
Es ist kein regulärer Ausdruck, an dem die Verwirrung eintritt. Stattdessen wird ein System namens "Globbing" verwendet - siehe:
$ man 7 glob
Anstelle von [az] müssen Sie [[: lower:]] als solche verwenden:
$ ls -d [[:lower:]]*
1) Es kann von Ihrem Betriebssystem abhängen, insbesondere von Ihrem Dateisystem. Ist die Schreibweise Ihres Dateisystems empfindlich? Sie erwähnen nicht das Betriebssystem oder den Dateisystemtyp.
2) bash kann auch case-unempfindliches Globbing ausführen. Sie können überprüfen, ob dies Ihr aktueller Fall istshopt | grep nocaseglob
Denken Sie außerdem daran, dass ls
mit den Dateien nichts gemacht wird. Deine Shell ist, dann gibt die Dateinamen an ls weiter.