A partir de una serie de mensajes en la LSPM, me di cuenta de que parecía haber alguna clase de problema a la hora de buscar archivos invisibles en Tiger. Voy a contar en qué consiste el problema, y luego os contaré cómo soslayarlo.
En efecto, para buscar archivos invisibles en Tiger, uno abriría una ventana del Finder, pulsaría Comando-F, y dejaría un único criterio de búsqueda, seleccionando Visibilidad en el desplegable de criterio, y escogiendo la opción Ítems invisibles en el desplegable donde se codifica el valor. Pero si hacemos eso, veremos que no obtenemos resultado ninguno. ¿Cómo es posible?
Si guardamos la búsqueda en la carpeta Búsquedas guardadas, —se encuentra dentro de la carpeta Librería de nuestra carpeta Inicio—, podemos pedir información a continuación, o editar el archivo con un editor de texto. En cualquier caso, veremos que hay un texto con el siguiente contenido:
(kMDItemFSInvisible = '1') &&
(kMDItemContentType != com.apple.mail.emlx) &&
(kMDItemContentType != public.vcard)
Sin embargo, lo que debería decir, realmente, es:
(kMDItemFSInvisible=='1') &&
(kMDItemContentType != com.apple.mail.emlx) &&
(kMDItemContentType != public.vcard)
Si utilizamos un editor capaz de manejar Unicode, como SubEthaEdit o el propio editor Xcode, podremos añadir ese = adicional, y tener una búsqueda guardada realmente capaz de localizar archivos invisibles, con la limitación de ámbito (Inicio, Carpeta, Ordenador…) que escojamos…
Una solución adicional consiste en enviar el teclado en el Terminal:
mdfind "(kMDItemFSInvisible=='1') && (kMDItemContentType != com.apple.mail.emlx) && (kMDItemContentType != public.vcard)"
Ojo, esto nos muestra los archivos que son invisibles porque tienen la propiedad “invisible”, pero no aquellos que son invisibles porque su nombre comienza con un punto (.).
¿Cómo se introdujo el error? Es sencillo: cada uno de los elementos del desplegable está asociado, por medio del mecanismo Cocoa Bindings, a una tabla de criterios de búsqueda que tiene que rellenarse a mano. En el código del programa, el compilador de avisa de la posibilidad de haber confundido = con ==, pero no así en los Cocoa Bindings, que pueden tener cualquier valor, y el compilador no tiene forma de saber para qué se van a utilizar.
La pregunta, ahora, es: ¿qué otras búsquedas se pueden estar viendo afectadas por errores similares?
ps. Por cierto, la búsqueda además nos elimina de la lista de archivos invisibles los mensajes de correo electrónico y las tarjetas de la agenda, que se guardan ahora como múltiples archivos invisibles para poder utilizar Spotlight con suficiente granularidad…