Ich arbeite am 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, weil ich nicht erwartet hatte cores dev etc home installer.failurerequests net private sbin tmp usr var vm
, dass
es meinem Muster entspricht.
Wie kann ich ein Glob-Muster schreiben, das nur mit Großbuchstaben übereinstimmt?
Antworten:
Dies liegt daran, dass das Glob-Muster
[A-Z]
im Allgemeinen nicht Großbuchstaben entspricht. Insbesondere erweitert es sich entsprechendWenn Sie möchten, dass Dateien mit einem Großbuchstaben beginnen, können Sie verwenden
oder legen Sie das Gebietsschema explizit fest
oder verwenden Sie die Bash-
globasciiranges
Shell-OptionSiehe den
Pattern matching
Abschnitt vonman bash
quelle
shopt -s nocaseglob
, wird bei der Glob-Erweiterung die Groß- und Kleinschreibung nicht berücksichtigt, selbst bei Teilen des Musters, die nicht zum Bereich gehören. zBecho DeV*
wird übereinstimmendev
. Dies ist eine praktische Einstellung, wenn Sie häufig mit Dateien mit inkonsistenter Groß- und Kleinschreibung arbeiten.