Glob insensible à la casse sur zsh / bash
Question
Je dois répertorier tous les fichiers dont le nom commence par 'SomeLongString'. Mais le cas de 'SomeLongString' peut varier. Comment?
J'utilise zsh, mais une solution bash est également la bienvenue.
La solution
ZSH:
$ unsetopt CASE_GLOB
Ou, si vous ne souhaitez pas activer globalement la casse sans distinction de casse, vous pouvez l'activer uniquement pour les différentes parties:
$ print -l (#i)(somelongstring)*
Cela correspond à tout fichier commençant par " somelongstring " (dans n'importe quelle combinaison de minuscules / majuscules). L'indicateur insensible à la casse s'applique à tout ce qui est entre parenthèses et peut être utilisé plusieurs fois. Lisez le manuel zshexpn (1)
pour plus d'informations.
MISE À JOUR Presque oublié, vous devez activer l’extension Globing pour que cela fonctionne:
setopt extendedglob
Autres conseils
bash:
shopt -s nocaseglob
En fonction de la profondeur à laquelle vous souhaitez afficher cette fiche, find
en offre beaucoup
à cet égard:
find . -iname 'SomeLongString*' -maxdepth 1
Cela ne vous donnera que les fichiers du répertoire en cours. Important ici est
le paramètre -iname
au lieu de -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~