Para una herramienta de recopilación de información de soporte, me gusta poder buscar varias aplicaciones por nombre (o más bien por su ID de paquete) y obtener sus versiones.
No me gusta usar el comando find
para esto ya que no va a encontrar todas las aplicaciones posibles, o tardará una eternidad.
Hay lsregister -dump
, que conoce todas las aplicaciones que me interesan, pero ese comando parece no ofrecer ninguna opción para buscar información solo sobre aplicaciones específicas. Tendría que filtrar el resultado con grep, pero no puedo averiguar cómo filtrarlo para poder buscar el ID del paquete de una aplicación, pero también obtener la versión (que aparece en una línea diferente).
También hay mdfind
, que podría ser adecuado para mi propósito.
Por ejemplo, digamos que quiero saber sobre todas las aplicaciones "Word" instaladas, como las versiones 2008, 2011 y 365.
Con lsregister -dump | grep 'com\.microsoft\.Word'
, obtendría estas líneas:
identifier: com.microsoft.Word (0x800460c2)
activityTypes: NOTIFICATION#:com.microsoft.Word, pv-e851f8544284d1
Eso no es útil para investigar la versión, ¿verdad?
Con mdfind "kMDItemCFBundleIdentifier == com.microsoft.Word"
obtendría las rutas:
/Applications/Microsoft Office 2008/Microsoft Word.app
/Applications/Microsoft Office 2011/Microsoft Word.app
¿Pero cómo obtendría la versión de eso? Pensé que filtraría las rutas resultantes con xargs
pero eso no funciona con los espacios en las rutas.