Ich arbeite im Stammverzeichnis und möchte Verzeichniseinträge drucken, die mit einem Großbuchstaben beginnen.
$ echo [A-Z]*
Applications Library Network System Users Volumes bin cores dev etc home installer.failurerequests net private sbin tmp usr var vm
Das Ergebnis verwirrt mich, da ich nicht
cores dev etc home installer.failurerequests net private sbin tmp usr var vm
mit einer Übereinstimmung mit meinem Muster gerechnet hatte.
Wie kann ich ein Glob-Muster schreiben, das nur mit Großbuchstaben übereinstimmt?
Antwort1
Das liegt daran, dass das Glob-Muster [A-Z]
im Allgemeinen nicht Großbuchstaben entspricht. Insbesondere wird es gemäß
die Sortierreihenfolge und der Zeichensatz des aktuellen Gebietsschemas
Wenn Sie Dateien möchten, die mit einem Großbuchstaben beginnen, können Sie verwenden
echo [[:upper:]]*
oder legen Sie das Gebietsschema explizit fest
(LC_COLLATE=C; echo [A-Z]*)
oder verwenden Sie die Bash- globasciiranges
Shell-Option
(shopt -s globasciiranges; echo [A-Z]*)
Weitere Informationen finden Sie im Pattern matching
Abschnittman bash