Groß- und Kleinschreibung Glob auf zsh / bash
Frage
Ich brauche alle Dateien, deren Namen mit ‚SomeLongString‘ beginnen aufzulisten. Aber der Fall von ‚SomeLongString‘ kann variieren. Wie?
Ich benutze zsh, aber eine bash-Lösung ist auch willkommen.
Lösung
ZSH:
$ unsetopt CASE_GLOB
Oder, wenn Sie Groß- und Kleinschreibung Globbing in der Regel nicht aktivieren möchten, können Sie es nur für die unterschiedlichen Teil aktivieren kann:
$ print -l (#i)(somelongstring)*
Dies wird jede Datei übereinstimmen, die mit „somelongstring“ beginnt (in einer beliebigen Kombination von Groß- / Kleinschreibung). Die Groß- und Kleinschreibung Flagge gilt für alles, was zwischen den Klammern und kann mehrfach verwendet werden. Lesen Sie das Handbuch zshexpn(1)
für weitere Informationen.
UPDATE Fast vergessen, Sie haben extendend zu ermöglichen, für diese Arbeit Globbing:
setopt extendedglob
Andere Tipps
bash:
shopt -s nocaseglob
Je nachdem, wie tief wollen Sie diese Auflistung haben, bietet find
ziemlich viel
in diesem Zusammenhang:
find . -iname 'SomeLongString*' -maxdepth 1
Dies wird Ihnen nur die Dateien im aktuellen Verzeichnis. Wichtig ist hier
der -iname
Parameter statt -name
.
$ 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~