Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

DC41

macrumors regular
Original poster
Feb 23, 2021
121
35
I need to wipe my MacBook Pro M1 Max and start from a fresh install of macOS (long story). Before I wipe it I want to create and print a list of all the apps currently installed. I've found several ways to list all the apps, but no solution allows me to copy the list into a text file and print it.

If anyone could point me to an app or procedure that would create a list I can then print for reference, I would greatly appreciate it!

Thanks!
 
It used to be a simple thing to open the Application folder, select all, copy, open TextEdit, create a new document, change the document format to "Plain text" and paste the list into the document. But…now it kind of sends my M3 MacBook Air into a tizzy. After a long beachball wait i got it to work once. Crashed the laptop once.

Another thing to do is open System Information, select Applications in the left column and then Print. It's a big document so saving it as a PDF is probably the best idea.
 
Variation of above:

  • Open Terminal
  • cd /Applications
  • ls -1 > ~/myapps.txt
  • Textedit
  • Open the file
  • File > Print
(Will list only the user installed vs all apps, including stock MacOS apps [/System/Applications])
 
It used to be a simple thing to open the Application folder, select all, copy, open TextEdit, create a new document, change the document format to "Plain text" and paste the list into the document. But…now it kind of sends my M3 MacBook Air into a tizzy. After a long beachball wait i got it to work once. Crashed the laptop once.

Another thing to do is open System Information, select Applications in the left column and then Print. It's a big document so saving it as a PDF is probably the best idea.
I'm embarassed I didn't see the print command while I was in System Settings. The full list was 78 pages long! I printed it as a PDF, so at least I have that. I could always open that on my iPad when need. Thanks!
Variation of above:

  • Open Terminal
  • cd /Applications
  • ls -1 > ~/myapps.txt
  • Textedit
  • Open the file
  • File > Print
(Will list only the user installed vs all apps, including stock MacOS apps [/System/Applications])
Thanks! Worked like a charm. The only problem is about 50 apps created their own folder in the /Applications folder. I got the name of the folder in the list, but not the app. I can guess most of them or fill in with the method Brian post above. Thanks for your help!
 
I'm embarassed I didn't see the print command while I was in System Settings. The full list was 78 pages long! I printed it as a PDF, so at least I have that. I could always open that on my iPad when need. Thanks!

Thanks! Worked like a charm. The only problem is about 50 apps created their own folder in the /Applications folder. I got the name of the folder in the list, but not the app. I can guess most of them or fill in with the method Brian post above. Thanks for your help!
If that is the Utilities folder, they are just part of the OS and will be there when you install the OS.
 
Another thing to do is open System Information, select Applications in the left column and then Print. It's a big document so saving it as a PDF is probably the best idea.
Interestingly, you can also save out the entire System Profile (including that full list of installed software) as an ".spx" file which is readable by the other Mac's System Information app. Seems to be basically an .xml file so one could probably also figure out how to read it in other ways.
 
  • Like
Reactions: DC41
Do you have the app Textsniper? It would be very easy to make a list of your app with this app?

Something like this?

SMART Technologies
Utilities
1Password
Alfred 5
AnyVideo Converter HD
App Store
AppCleaner
Automator
Blackmagic Disk Speed Test
Books
Calclape
Calculator
Calendar
Chess
CleanShot X
 
Click on the apple icon while holding down the option key to show system information.

Under software choose applications.

All of your applications will be listed there.

System Information Applications.png
 
If you're looking for something a little more simplified, like just printing what's in the Finder window of your Applications folder, you might give PrintWindow a try. The base version is free and will likely give you what you need.

There is the ability to automatically expand folders and subfolders, as well as other cool options. I've been using this app for years with no issues.
 
  • Like
Reactions: ignatius345
The only problem is about 50 apps created their own folder in the /Applications folder. I got the name of the folder in the list, but not the app.
Another solution:
Code:
find /Applications -maxdepth 3 -iname '*.app' > ~/Desktop/MyApplications.txt; open ~/Desktop/MyApplications.txt
 
I like File List Export https://www.gtrigonakis.com/filelistoexcel/ (it is in the App Store) which makes it easy to export file lists to CSV or XLSX. As well as a bare list it includes many columns - I have found version, date created, date added particularly useful when analysing the present state of the apps I have installed.

If you do use it, note the filters which are at the bottom left.
 
  • Like
Reactions: DC41
List applications AppleScript adapted from https://www.jonn8.com/html/scripts/misc/List_Folder_Contents.html
AppleScript:
property script_name : "List Folder Contents"
property script_description : "This script will list a folder's contents returning full paths as strings and limit the list to specific file types. The script can also process subfolders (recursion)."

set the_folder to (choose folder with prompt "Choose a Folder to List:") as Unicode text
set file_types to {"APPL"} --file types, set to {} and inc_folders to true to just return folders; file types are 4 character codes such as "osas" or "TEXT"

set with_subfolders to my get_boolean("Search subfolders?", {"No", "Yes"})
if with_subfolders = "user cancelled" then return

set inc_folders to my get_boolean("Include folders in the list? (If you only want file names, and not folder names, select \"No\".)", {"No", "Yes"})
if inc_folders = "user cancelled" then return

set use_posix_path to my get_boolean("Return the paths as HFS (Mac-style) or POSIX (UNIX-style)?", {"HFS", "POSIX"})
if use_posix_path = "user cancelled" then return

set return_as_string to my get_boolean("Return the results as an AppleScript list or a string with each file on its own line?", {"List", "String"})
if return_as_string = "user cancelled" then return

set add_to_clipboard to my get_boolean("Copy the results to the clipboard?", {"No", "Yes"})
if add_to_clipboard = "user cancelled" then return

set the_files to get_folder_list(the_folder, file_types, with_subfolders, inc_folders, use_posix_path)

if return_as_string then
    tell (a reference to my text item delimiters)
        set {old_tid, contents} to {contents, return}
        set {the_files_string, contents} to {the_files as Unicode text, old_tid}
    end tell
    copy the_files_string to the_files
end if

if add_to_clipboard then
    if not return_as_string then
        copy the_files to the_files_string
        repeat with i from 1 to (count the_files_string)
            set item i of the_files_string to ("\"" & item i of the_files_string & "\", ")
        end repeat
        set the_files_string to ("{" & (text 1 thru -3 of (the_files_string as Unicode text)) & "}")
    end if
    set the clipboard to the_files_string
end if
beep
return the_files

on get_folder_list(the_folder, file_types, with_subfolders, inc_folders, use_posix_path)
    set the_files to {}
    tell application "Finder" to set folder_list to items of folder the_folder
    repeat with new_file in folder_list
        try
            set temp_file_type to file type of new_file
        on error
            set temp_file_type to "fold"
        end try
        if file_types contains temp_file_type or file_types = {} then
            if use_posix_path then
                set the_files to the_files & {POSIX path of (new_file as Unicode text)}
            else
                set the_files to the_files & {new_file as Unicode text}
            end if
        end if
        if temp_file_type = "fold" then
            if inc_folders and file_types ≠ {} then
                if use_posix_path then
                    set the_files to the_files & {POSIX path of (new_file as Unicode text)}
                else
                    set the_files to the_files & {new_file as Unicode text}
                end if
            end if
            if with_subfolders then set the_files to the_files & my get_folder_list((new_file as Unicode text), file_types, with_subfolders, inc_folders, use_posix_path)
        end if
    end repeat
    return the_files
end get_folder_list

on get_boolean(m, b)
    try
        return (button returned of (display dialog m buttons ({"Cancel"} & b) default button 3 with icon 1) = (b's item 2))
    on error
        return "user cancelled"
    end try
end get_boolean
 
List applications AppleScript adapted from https://www.jonn8.com/html/scripts/misc/List_Folder_Contents.html
AppleScript:
property script_name : "List Folder Contents"
property script_description : "This script will list a folder's contents returning full paths as strings and limit the list to specific file types. The script can also process subfolders (recursion)."

set the_folder to (choose folder with prompt "Choose a Folder to List:") as Unicode text
set file_types to {"APPL"} --file types, set to {} and inc_folders to true to just return folders; file types are 4 character codes such as "osas" or "TEXT"

set with_subfolders to my get_boolean("Search subfolders?", {"No", "Yes"})
if with_subfolders = "user cancelled" then return

set inc_folders to my get_boolean("Include folders in the list? (If you only want file names, and not folder names, select \"No\".)", {"No", "Yes"})
if inc_folders = "user cancelled" then return

set use_posix_path to my get_boolean("Return the paths as HFS (Mac-style) or POSIX (UNIX-style)?", {"HFS", "POSIX"})
if use_posix_path = "user cancelled" then return

set return_as_string to my get_boolean("Return the results as an AppleScript list or a string with each file on its own line?", {"List", "String"})
if return_as_string = "user cancelled" then return

set add_to_clipboard to my get_boolean("Copy the results to the clipboard?", {"No", "Yes"})
if add_to_clipboard = "user cancelled" then return

set the_files to get_folder_list(the_folder, file_types, with_subfolders, inc_folders, use_posix_path)

if return_as_string then
    tell (a reference to my text item delimiters)
        set {old_tid, contents} to {contents, return}
        set {the_files_string, contents} to {the_files as Unicode text, old_tid}
    end tell
    copy the_files_string to the_files
end if

if add_to_clipboard then
    if not return_as_string then
        copy the_files to the_files_string
        repeat with i from 1 to (count the_files_string)
            set item i of the_files_string to ("\"" & item i of the_files_string & "\", ")
        end repeat
        set the_files_string to ("{" & (text 1 thru -3 of (the_files_string as Unicode text)) & "}")
    end if
    set the clipboard to the_files_string
end if
beep
return the_files

on get_folder_list(the_folder, file_types, with_subfolders, inc_folders, use_posix_path)
    set the_files to {}
    tell application "Finder" to set folder_list to items of folder the_folder
    repeat with new_file in folder_list
        try
            set temp_file_type to file type of new_file
        on error
            set temp_file_type to "fold"
        end try
        if file_types contains temp_file_type or file_types = {} then
            if use_posix_path then
                set the_files to the_files & {POSIX path of (new_file as Unicode text)}
            else
                set the_files to the_files & {new_file as Unicode text}
            end if
        end if
        if temp_file_type = "fold" then
            if inc_folders and file_types ≠ {} then
                if use_posix_path then
                    set the_files to the_files & {POSIX path of (new_file as Unicode text)}
                else
                    set the_files to the_files & {new_file as Unicode text}
                end if
            end if
            if with_subfolders then set the_files to the_files & my get_folder_list((new_file as Unicode text), file_types, with_subfolders, inc_folders, use_posix_path)
        end if
    end repeat
    return the_files
end get_folder_list

on get_boolean(m, b)
    try
        return (button returned of (display dialog m buttons ({"Cancel"} & b) default button 3 with icon 1) = (b's item 2))
    on error
        return "user cancelled"
    end try
end get_boolean
Awesome! Thank you very much for this!
 
  • Like
Reactions: bogdanw
Do you have the app Textsniper? It would be very easy to make a list of your app with this app?

Something like this?

SMART Technologies
Utilities
1Password
Alfred 5
AnyVideo Converter HD
App Store
AppCleaner
Automator
Blackmagic Disk Speed Test
Books
Calclape
Calculator
Calendar
Chess
CleanShot X
TextSniper is incredible. I use it constantly. Sometimes even for copying things where I technically *could* copy them but I want to do so without losing my keyboard focus.
 
TextSniper is incredible. I use it constantly. Sometimes even for copying things where I technically *could* copy them but I want to do so without losing my keyboard focus.
I do have TextSniper! It is extremely useful, but I haven't been able to use it for this need because I've never figured out how to scroll a page and snipe. I guess I could do multiple "copy & pastes" with it, scrolling each time, but I've got a LOT of apps!
 
  • Like
Reactions: ignatius345
I do have TextSniper! It is extremely useful, but I haven't been able to use it for this need because I've never figured out how to scroll a page and snipe. I guess I could do multiple "copy & pastes" with it, scrolling each time, but I've got a LOT of apps!
You want the "additive clipboard" option. It will just keep adding more stuff to the clipboard as you snipe it.
 
You want the "additive clipboard" option. It will just keep adding more stuff to the clipboard as you snipe it.
LOL! I never looked that deep into the app! What a great find. Thanks for pointing it out. I can think of all kinds of tasks that will simplify!
 
  • Like
Reactions: ignatius345
You want the "additive clipboard" option. It will just keep adding more stuff to the clipboard as you snipe it.
Thanks for pointing this out. I have been comparing apps that extract text, and this is the first significant advantage I’m aware of that TextSniper has over Shottr. However, I like Shottr better because not only does it show, in a temporary dialog box, the text it is putting on the clipboard, it allows you to readily remove the breaks from the recognized text.
 
Thanks for pointing this out. I have been comparing apps that extract text, and this is the first significant advantage I’m aware of that TextSniper has over Shottr. However, I like Shottr better because not only does it show, in a temporary dialog box, the text it is putting on the clipboard, it allows you to readily remove the breaks from the recognized text.
TextSniper also has a "keep line breaks" setting you can toggle on and off. You can also set up custom shortcuts to capture with or without line breaks. I switch back and forth frequently, depending on what I'm doing.

Have heard great things about Shottr as well!
 
  • Like
Reactions: gregmac19
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.