GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Glob ohne Berücksichtigung der Groß-/Kleinschreibung auf zsh/bash

ZSH:

$ unsetopt CASE_GLOB

Oder, wenn Sie die Groß- und Kleinschreibung im Allgemeinen nicht aktivieren möchten, können Sie sie nur für den variierenden Teil aktivieren:

$ print -l (#i)(somelongstring)*

Dies passt zu jeder Datei, die mit "somelongstring" beginnt (in einer beliebigen Kombination aus Klein-/Großbuchstaben). Das case-insensitive Flag gilt für alles zwischen den Klammern und kann mehrfach verwendet werden. Lesen Sie das Handbuch zshexpn(1) für weitere Informationen.

AKTUALISIEREN Fast vergessen, dass Sie Extendend Globbing aktivieren müssen, damit dies funktioniert:

setopt extendedglob

Je nachdem, wie tief Sie diese Auflistung haben möchten, find bietet diesbezüglich einiges:

find . -iname 'SomeLongString*' -maxdepth 1

Dadurch erhalten Sie nur die Dateien im aktuellen Verzeichnis. Wichtig ist hier die -iname Parameter anstelle von -name .


bash:

shopt -s nocaseglob


$ function i () {
> shopt -s nocaseglob; $*; shopt -u nocaseglob
> }
$ ls *jtweet*
ls: cannot access *jtweet*: No such file or directory
$ i ls *jtweet*
JTweet.pm  JTweet.pm~  JTweet2.pm  JTweet2.pm~

Linux
  1. Befehl nicht in Zsh, aber in Bash gefunden?

  2. Rekursiver Glob?

  3. Verhalten von Arrays in Bash-Scripting und ZSH-Shell (Startindex 0 oder 1?)

  4. Was genau ist <() in bash (und =() in zsh)?

  5. bash - Vergleich der Variablen ohne Berücksichtigung der Groß-/Kleinschreibung

Bash-while-Schleife

Bash-Funktionen

Bash bis Loop

Bash-Case-Statement

Bash Shebang

Was ist Zsch? Sollten Sie es verwenden?