This AppleScript will create a file containing a tree style list of all files inside the chosen directory and save that list in a file created in that directory. The list file will include the path of the listed directory as well as the date and time it was saved.
The default directory in the choose dialog is the folder of the Finder’s frontmost window unless there are no Finder windows. In which case the default is the Desktop folder.
It does not follow aliases (not sure about symlinks) and will indicate an alias by placing ” [alias]” behind the file name.
This is actually a modified version of a script that’s been around the web for years.
global fileList on listFolder(f, s) list folder f repeat with i in the result if alias of (info for alias (f & i)) then set fileList to fileList & s & i & " [alias]" & return else if package folder of (info for alias (f & i)) then set fileList to fileList & s & i & return else if folder of (info for alias (f & i)) then set fileList to fileList & s & i & "/" & return listFolder(f & i & ":", s & " ") else if first character of i is not "." then set fileList to fileList & s & i & return end if end if end if end if end repeat return fileList end listFolder try tell application "Finder" to set cwd to (POSIX path of (folder of window 1 as string)) as POSIX file on error set cwd to path to desktop folder end try set theFolder to (choose folder "Select a folder to list:" default location cwd) as string --This will get the name of the folder for use in the name of the generated file set folderName to name of (info for (theFolder as alias)) --This will get the Unix style path of the folder for info purposes inside the file itself set folderPath to POSIX path of theFolder set fileList to "# File list of: " & folderPath & " on " & (current date) & return & return set fileList to listFolder(theFolder, "") set listFile to ((theFolder) as text) & folderName & " list of files " & (do shell script "date \"+ %Y-%m-%d %H%M\"") & ".txt" tell application "Finder" set newFile to (open for access file listFile with write permission) set eof newFile to 0 write fileList to newFile close access newFile open listFile as alias end tell