Se a exibição de todas as extensões de nome de arquivo estiver ativada, kMDItemDisplayName contém .app para alguns aplicativos, mas não para outros. Isso também escaparia de nomes que contenham '
, "
ou \
:
a="Consultant's Canary"; a="${a//\'/\'}.app"; a=${a//"/\"}; a=${a//\/\\}; mdls -name kMDItemCFBundleIdentifier -raw "$(mdfind 'kMDItemContentType==com.apple.application-bundle&&kMDItemFSName=="'"$a"'"' | head -n1)"
Outra opção:
a=Finder; mdls -name kMDItemCFBundleIdentifier -raw "$(mdfind kMDItemContentType==com.apple.application-bundle | sed -E $'s|(.*/)(.*)|\1\t\2|' | grep -F $'\t'"$a".app -m1 | tr -d '\t')"
Um único comando osascript também pode ser mais rápido:
osascript -e 'on run args
set output to {}
repeat with a in args
set end of output to id of app a
end
set text item delimiters to linefeed
output as text
end' Finder 'AppleScript Editor'