Print Folder Contents Applescript
I recently needed a list of all files in a particular folder, actually the folder contained sub-folders also containing files. This tedious task becomes trivial with a couple of UNIX commands and Applescript provides a convienient user interface and the glue between the different UNIX commands.
The script is shown colour coded below. The first part of the script simply asks the user to choose the folder they want to print, and then generates a UNIX compatible POSIX path. The next part generates a temporary file to save the output into.
The next dialog asks the user if they only want to print
this folder or to include sub-directories. If the response
is to only print this folder then the UNIX command:-
ls > target_file
Can be used to list the directory and send the output to
the temporary file.
Alternatively the command:-
ls -p -C -R > target_file
Works recursively through the file structure listing all
the files and formats the output into a multi-column
format.
The final part of the script prints the temporary file.
The script can be downloaded from here
set the_folder to (choose folder with prompt "Choose a folder or volume:") set the_folder to POSIX path of the_folder tell application "Finder" to set the_temp_folder to (path to temporary items folder) as text --If you want to keep the file use --tell application "Finder" to set the_desktop to (path to desktop folder) as text set target_file to the_temp_folder & "JUNK.txt" set target_file to POSIX path of target_file display dialog "Do you want to print this folder only or include sub-directories" buttons {"Cancel", "This only", "Sub-Directories"} default button 3 if the button returned of the result is "This only" then --Print as list set the_script to "cd " & the_folder & " ls > " & target_file as text else if the button returned of the result is "Sub-Directories" then --Print recursively as formatted list set the_script to "cd " & the_folder & " ls -p -C -R > " & target_file as text else quit end if do shell script the_script set to_print to "lp " & target_file do shell script to_print --For testing --tell application "Terminal" --activate --do script to_print --end tell