Я уверен, что есть команда оболочки, которая может сделать это быстрее, но вот один из способов в чистом Applescript, который дает вам полный контроль над форматированием того, какую информацию вы хотите отобразить.
property kFileList : {}
tell application "Finder"
set source_folder to choose folder with prompt "Please select directory."
my createList(source_folder)
end tell
on createList(item_list)
set the the_items to list folder item_list without invisibles
set item_list to item_list as string
repeat with i from 1 to number of items in the the_items
set the_item to item i of the the_items
set the_item to (item_list & the_item) as alias
set this_info to info for the_item
set file_name to name of this_info
set end of kFileList to file_name
if folder of this_info is true then
my createList(the_item)
end if
end repeat
end createList
В примечании также есть список приложений с числовыми файлами, которые могут сделать это быстрее, чем Applescript.
ОБНОВЛЕНИЕ: В результате этого обсуждения, здесь снова функция, но на этот раз с использованием обновленного API. Вероятно, для этого может потребоваться некоторая очистка, но он достаточно легко каталогизирует мой рабочий стол (и это глубокая, глубокая папка для меня):
property kFileList : {}
tell application "Finder"
set source_folder to choose folder with prompt "Please select directory."
my createList(source_folder)
end tell
return kFileList
on createList(mSource_folder)
set item_list to ""
tell application "System Events"
set item_list to get the name of every disk item of mSource_folder
end tell
set item_count to (get count of items in item_list)
repeat with i from 1 to item_count
set the_properties to ""
set the_item to item i of the item_list
set the_item to ((mSource_folder & the_item) as string) as alias
tell application "System Events"
set file_info to get info for the_item
end tell
if visible of file_info is true then
set file_name to displayed name of file_info
set end of kFileList to file_name
if folder of file_info is true then
my createList(the_item)
end if
end if
end repeat
end createList
Я должен быть подписан на неправильные списки рассылки или пропущен, потому что эти изменения API были введены в действие, и я ни разу не слышал о них. Я использовал свой первый предложенный метод в десятках проектов в основном потому, что это был код, изначально предложенный Apple, и полное отсутствие ошибок при его использовании (даже на момент написания этой статьи) никогда не вызывало у меня необходимости что-либо обновлять. ,
Turnabout - честная игра, и я прошу прощения за злобное понижение до mmcgrail, и я заменяю его повышением. Просто чтобы прояснить, я никогда не думал, что ответ, данный mmcgrail, был неправильным. Это отличный однострочный удобный метод, но я остался в стороне от моих комментариев. Но скорее, это был его отрицательный голос и его заявленный контекст, на который я обиделся. В конце концов, это всего лишь код, и я думаю, что мы все здесь по одной и той же причине: чтобы найти лучший способ сделать то, что мы делаем. Кажется, теперь у меня есть несколько собственных обновлений для принятия.
Приветствия