„echo [AZ]*“ passt auch zu Dateinamen in Kleinbuchstaben?

„echo [AZ]*“ passt auch zu Dateinamen in Kleinbuchstaben?

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 vmmit 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- globasciirangesShell-Option

(shopt -s globasciiranges; echo [A-Z]*)

Weitere Informationen finden Sie im Pattern matchingAbschnittman bash

verwandte Informationen