Dies ist eine seltsame Frage, da zsh die einzige Shell mit dieser Funktion ist. Es heißt Glob Qualifiers . Das Handbuch ist wie üblich eher knapp und ohne Beispiele. Die Zsh-Liebhaberseite enthält einige Beispiele. Beim Googelnzsh "glob qualifiers"
werden einige Blog-Beiträge und Tutorials angezeigt . Sie können auch "glob qualifier"
auf dieser Site suchen .
Die Grundlagen: Glob-Qualifikationsmerkmale stehen am Ende des Globs in Klammern. Am nützlichsten sind die Satzzeichen, um nur bestimmte Dateitypen auszuwählen.
echo *(/) # directories
echo *(.) # regular files
echo *(@) # symbolic links
echo *(-/) # directories and symbolic links to directories
Es gibt andere Qualifikationsmerkmale, die nach Metadaten wie Größe, Datum und Besitz gefiltert werden können.
# files owned by the user running zsh, over 1MB, last modified more than 7 days ago
echo *(ULm+1m+7)
Glob-Qualifikanten können auch die Reihenfolge der Übereinstimmungen steuern und die Anzahl der Übereinstimmungen einschränken.
echo *(Om[1,10]) # The 10 oldest files
Sie können beliebige Filter einrichten, indem Sie eine Funktion mit dem +
Qualifizierer aufrufen (Sie können den Code sogar in den e
Qualifizierer einfügen , wenn Ihnen das schwierige Zitieren nichts ausmacht).
Beachten Sie, dass dies leider nur bei Globs funktioniert. Wenn Sie auf diese Weise eine Liste von Dateinamen erstellen möchten, müssen Sie beim Globbing filtern. Wenn Sie eine Liste filtern möchten, die Sie bereits erstellt haben, gibt es eine völlig andere Syntax, Parametererweiterungsflags , die nur eine einfache Textfilterung durchführen können ( "${(@)ARRAY:#PATTERN}"
).
EXTENDED_GLOB
Option können Sie auch die Operatoren^x
undx~y
glob für Pfadnamen-basierte Ausschlüsse beim Globbing (à lagrep -v
) verwenden.