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.

War es hilfreich?

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~
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top