Per uno strumento di raccolta delle informazioni di supporto, mi piace essere in grado di cercare diverse app per nome (o meglio per il loro ID bundle) e recuperare le loro versioni.
Non mi piace utilizzare il comando find
per questo perché non troverà tutte le app possibili, o ci vorrà per sempre.
C'è lsregister -dump
, che conosce tutte quelle app che mi interessano, ma quel comando sembra non offrire alcuna opzione per cercare informazioni solo su app specifiche. Dovrei filtrare il risultato con grep, ma non riesco a capire come filtrarlo in modo da poter cercare l'ID bundle di un'app ma anche ottenere la versione (che appare in una linea diversa).
C'è anche mdfind
, che potrebbe essere adatto al mio scopo.
Diciamo, per esempio, che voglio sapere di tutte le app "Word" installate, come le versioni 2008, 2011 e 365.
Con lsregister -dump | grep 'com\.microsoft\.Word'
, otterrei queste righe:
identifier: com.microsoft.Word (0x800460c2)
activityTypes: NOTIFICATION#:com.microsoft.Word, pv-e851f8544284d1
Non è utile informarsi sulla versione, vero?
Con mdfind "kMDItemCFBundleIdentifier == com.microsoft.Word"
otterrei i percorsi:
/Applications/Microsoft Office 2008/Microsoft Word.app
/Applications/Microsoft Office 2011/Microsoft Word.app
Ma come potrei ottenere la versione da quella? Ho pensato di filtrare i percorsi risultanti con xargs
ma non funziona con gli spazi nei percorsi.