List of installed applications on mac

Alec Jacobson

February 23, 2011

weblog/

Seems like there are several hacky ways to achieve this. And it depends on what you mean by "installed". If you just mean, list all application bundles (files ending with .app) then you can achieve it the following command in your terminal:
find / -name "*.app"
That command returns a list where each line is the full path to the application. If you just want the name of the application then use:
find / -name "*.app" | sed -e "s/\(.*\)\/\([^\/]*\).app/\2/g"
If you're really a stickler and want to see all applications even ones the current user does not have permissions to see then use:
sudo find / -name "*.app" | sed -e "s/\(.*\)\/\([^\/]*\).app/\2/g"
On my computer this takes around ∞ minutes. But maybe you don't mean to find every application anywhere on the computer, but say just the ones in the /Applications folder. Then you can slightly change the above command to:
find /Applications -name "*.app" | sed -e "s/\(.*\)\/\([^\/]*\).app/\2/g"
On my computer this takes around 3 minutes. Notice that this is still taking a considerable amount of time and its returning a bunch of weird applications. These are Utility applications or example applications buried deep in the sub folders of the /Applications folder. You can speed up the previous command by providing a maximum depth for the search:
find /Applications -name -maxdepth 1 "*.app" | sed -e "s/\(.*\)\/\([^\/]*\).app/\2/g"
This only finds .app files directly in the /Applications folder. So it doesn't find the Microsoft Office or Adobe CS5 apps I have because those are grouped into a folder. But it only takes 0.050 seconds. I settled on using -maxdepth 2:
find /Applications -name -maxdepth 2 "*.app" | sed -e "s/\(.*\)\/\([^\/]*\).app/\2/g"
This finds all of my meaningful applications and in only 0.060 seconds. Higher maxdepths found a few more apps but they were weirdo utility/example apps and made the command take over a second. If you need this list as an applescript list just use the following:
set list_of_installed_apps to paragraphs of (do shell script "find /Applications/ -name \"*.app\" -maxdepth 2| sed -e \"s/\\(.*\\)\\/\\([^\\/]*\\).app/\\2/g\"")