ls -d *e*
imprime tous les fichiers contenant un "e" quelque part dedans. Mais le contraire, ls -d *[!e]*
ne semble pas fonctionner. Pourquoi exactement ?
est-ce parce que ls
prend *
comme son propre argument et développe tous les fichiers ?
Je comprends que je peux faire :ls -d !(*e*)
(en Bash avec extglob
set, ou en ksh).
Réponse acceptée :
Ce que fait réellement ce glob correspond à n'importe quel nombre de caractères, puis à un seul caractère autre qu'un e, puis à n'importe quel nombre de caractères. Il correspondra à tout fichier dont le nom n'est pas entièrement composé de e.