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.

Était-ce utile?

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~
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top