Ich habe keine VMware mit zu testen, so werde ich iTunes
stattdessen verwenden.
einfachste Methode
Grundsätzlich bin ich Rohausgangssignal von mdls
spezifiziert dann, um loszuwerden, alle die fremden Sachen, tr
mit der NUL zwischen den beiden Feldern in ein Komma transkribieren. Das ist einfach, gibt dir aber nicht den Platz danach, aber vielleicht ist es gut genug.
mdls -name kMDItemFSName -name kMDItemVersion -raw /Applications/iTunes.app | tr '\0' ','
iTunes.app,12.4.1
etwas härter und genauer
NULs Austausch mit tr
ist in Ordnung, aber Sie können nicht sowohl das Komma und den Raum zu bekommen, weil tr
nur, dass "one-for-one" Ersatz . sed
kann die einzelne NUL durch ein Komma und ein Leerzeichen ersetzen, aber es ist nicht sehr einfach mit der Nicht-GNU-Version von sed
auf OSX, also würde ich stattdessen mit gehen.
mdls -name kMDItemFSName -name kMDItemVersion -raw /Applications/Textedit.app | perl -pe 's/\x0/, /'
TextEdit.app, 1.11
Wildcard Version
Oder, wenn Sie Platzhalter verwenden möchten, würde ich gehen mit awk
mdls -name kMDItemFSName -name kMDItemVersion /Applications/*.app | awk -F'"' '/kMDItemFSName/{n=$2} /kMDItemVersion/{print n, $2}' OFS=', '
Ausgabe
App Store.app, 2.1
Automator.app, 2.6
Calculator.app, 10.8
Calendar.app, 8.0
Carbon Copy Cloner.app, 4.1.9
Chess.app, 3.13
Contacts.app, 9.0
...
Sonos.app, 6.2.2
Stickies.app, 10.0
System Preferences.app, 14.0
TextEdit.app, 1.11
TextWrangler.app, 5.0.2
Time Machine.app, 1.3
VirtualBox.app, 5.0.24
Xcode.app, 7.3
iBooks.app, 1.5
iMovie.app, 10.1.2
iTunes.app, 12.4.1
Die awk
Befehl setzt im Grunde das Eingabefeld Trennzeichen auf "
, und jedes Mal, wenn es kMDItemFSName
sieht, speichert es das zweite Feld (das ist der Name der App) als n
. Jedes Mal, wenn es kMDItemVersion
sieht, gibt es den gespeicherten Namen und das zweite Feld (die Version) aus. Das OFS (Ausgabefeldtrennzeichen) ist auf ein Komma und ein Leerzeichen gesetzt.
Die Wildcard-Version mit awk stellt die Anwendung (en), Komma (s), Leerzeichen und Zeilenumbrüche für meine vorgesehenen Zwecke benötigt. Die anderen beiden Optionen haben keine Zeilenumbrüche, nachdem die Ausgabe von "AppName, AppVersion" bereitgestellt wurde. – ordepmod