Dans les critères de recherche de mon Finder, lorsque je filtre sur un champ de texte, j'ai plusieurs options. L'une d'entre elles est "matches" et l'autre "contains", mais à part le fait qu'elles sont effectivement différentes, je ne sais pas exactement ce qu'elles signifient (contains go
correspond à un nom de fichier libpng.o
par exemple, ce que je trouve également déroutant).
Réponses
Trop de publicités?J'ai constaté qu'un moyen facile de déchiffrer les exactement ce que Finder entend par requête, c'est de l'enregistrer en tant que recherche sauvegardée, puis d'inspecter ce fichier avec un éditeur de texte. Dans votre cas, ouvrez le Finder et faites une recherche pour matches 'go'
et l'enregistrer en tant que recherche sauvegardée, et faire de même pour contains 'go'
.
Si vous faites cela, vous verrez que matches 'go'
produit ce modèle de recherche :
(kMDItemDisplayName = "go*"cdw)
considérant que contains 'go'
produit ce modèle de recherche :
(kMDItemDisplayName = "*go*"cd)
kMDItemDisplayName
signifie que vous essayez de faire correspondre quelque chose au nom affiché du fichier.
Chacune des lettres de cd
y cdw
sont des modificateurs de comparaison de valeurs :
- La lettre
c
signifie que la comparaison n'est pas sensible à la casse (c.-à-d.A
ya
sont considérés comme identiques). - La lettre
d
signifie que la comparaison est insensible aux signes diacritiques (i.e.è
ye
sont considérés comme identiques). - La lettre
w
signifie que la comparaison est basée sur les mots et qu'elle détecte les transitions entre les minuscules et les majuscules.
Vous trouverez la documentation des modificateurs de comparaison de valeurs dans la rubrique Documentation d'Apple .
Ainsi, dans votre scénario matches 'go'
signifie qu'il recherchera les fichiers dont le nom contient un mot commençant par la chaîne de caractères go
(c'est-à-dire qu'il peut y avoir n'importe quel suffixe à la chaîne de caractères dans le mot) - sans tenir compte de la casse et des différentes marques.
De même, contains 'go'
signifie qu'il recherchera les fichiers dont le nom contient la chaîne de caractères go
quelque part à l'intérieur (c'est-à-dire qu'il peut y avoir n'importe quel préfixe ou suffixe à la chaîne) - sans tenir compte de la casse et des différentes marques.