extensions=''${(fR)${(M)${(f)"$(< /etc/mime.types)"}##video*}##video[[:alnum:]./-]##[\t ]#}''
$(< /etc/mime.types)- on extrait le contenu du fichier${(f)"..."}- on fait du line-splitting${(M)${...}##video*}- on ne sélectionne que les lignes matchantvideo*${(R)${...}##video[[:alnum:]./-]##[\t ]#}- on matche la partie gauche de la ligne et on garde le reste.
Maintenant, la variable $extensions contient les
extensions dans un fouilli pas encore utilisable : ce qu'on veut,
c'est construire une expression rationnelle qui matche un nom de
fichier associé à une vidéo. On veut
*(wmv|avi|mkv|mpg). Pour le moment, on a une chaine de
ce genre :
wmv avi mkv mpg
videos="(#i)*(${(j:|:)${(z)extensions}})"
${(z)extensions}- on fait un word-splitting classique (les éléments sont séparés par$IFS)${(j:|:)...}- on joint tous les mots/éléments par le caractère '|'(#i)*(...)- on mets le flag "case insensitive" et le {début,fin} de l'expression rationnelle.