En mis criterios de búsqueda del Finder, cuando estoy filtrando en un campo de texto tengo varias opciones. Una de ellas es "coincide", y la otra es "contiene", pero aparte de establecer que efectivamente son diferentes no tengo claro qué significa exactamente cualquiera de ellas (contiene go
coincide con un nombre de archivo libpng.o
por ejemplo, lo que también me parece confuso).
Respuestas
¿Demasiados anuncios?He descubierto que una forma fácil de descifrar exactamente lo que Finder quiere decir con una consulta es guardarla como una búsqueda guardada y luego inspeccionar ese archivo con un editor de texto. Así que en tu caso abre el Finder y haz una búsqueda de matches 'go'
y guardar eso como una búsqueda guardada, y hacer lo mismo para contains 'go'
.
Si lo haces, verás que matches 'go'
produce este patrón de búsqueda:
(kMDItemDisplayName = "go*"cdw)
mientras que contains 'go'
produce este patrón de búsqueda:
(kMDItemDisplayName = "*go*"cd)
kMDItemDisplayName
significa que está tratando de hacer coincidir algo con el nombre mostrado del archivo.
Cada una de las letras de cd
y cdw
son los llamados modificadores de comparación de valores:
- La carta
c
significa que la comparación se realiza sin distinguir entre mayúsculas y minúsculas (es decirA
ya
se consideran iguales). - La carta
d
significa que la comparación es insensible a los signos diacríticos (por ejemploè
ye
se consideran iguales). - La carta
w
significa que la comparación se basa en la palabra, y que la comparación detecta las transiciones de minúsculas a mayúsculas.
Puede encontrar la documentación de los modificadores de comparación de valores en Documentación de Apple .
Así que en su escenario matches 'go'
significa que buscará los archivos cuyo nombre tenga una palabra que empiece por la cadena go
(es decir, puede haber cualquier sufijo de la cadena en la palabra), sin tener en cuenta las mayúsculas y minúsculas ni las distintas marcas.
De la misma manera, contains 'go'
significa que buscará los archivos cuyo nombre tenga la cadena go
en algún lugar dentro de ella (es decir, podría haber cualquier prefijo o sufijo en la cadena) - ignorando mayúsculas y minúsculas y varias marcas.