Für ein Tool zum Sammeln von Supportinformationen möchte ich in der Lage sein, mehrere Apps nach Namen (oder besser nach ihrer Bundle-ID) zu suchen und ihre Versionen abzurufen.
Ich verwende den find
Befehl nicht gerne für diesen Zweck, da sonst nicht alle möglichen Apps gefunden werden, oder es wird ewig dauern.
Es gibt zwar lsregister -dump
Apps, die mich interessieren, aber dieser Befehl bietet anscheinend keine Möglichkeit, nur Informationen zu bestimmten Apps abzurufen. Ich müsste das Ergebnis mit grep filtern, kann aber nicht herausfinden, wie es gefiltert werden soll, damit ich nach der Bundle-ID einer App suchen und auch die Version abrufen kann (die in einer anderen Zeile angezeigt wird).
Es gibt auch mdfind
, die für meinen Zweck geeignet sein könnten.
Nehmen wir zum Beispiel an, ich möchte Informationen zu allen installierten "Word" -Anwendungen erhalten, z. B. zu den Versionen 2008, 2011 und 365.
Mit lsregister -dump | grep 'com\.microsoft\.Word'
würde ich diese Zeilen bekommen:
identifier: com.microsoft.Word (0x800460c2)
activityTypes: NOTIFICATION#:com.microsoft.Word, pv-e851f8544284d1
Es ist nicht hilfreich, die Version anzufragen, oder?
Mit mdfind "kMDItemCFBundleIdentifier == com.microsoft.Word"
würde ich die Pfade bekommen:
/Applications/Microsoft Office 2008/Microsoft Word.app
/Applications/Microsoft Office 2011/Microsoft Word.app
Aber wie würde ich die Version daraus bekommen? Ich dachte, ich würde die resultierenden Pfade mit filtern, xargs
aber das funktioniert nicht mit den Leerzeichen in den Pfaden.
defaults
ist dein Freund;)
*.app/Contents/Info.plist
Datei lesen . Ich werde eine Antwort mit Details geben.