Necesito obtener el contenido completo (visible) de una carpeta y sus subcarpetas como una lista. es posible?Obtenga el contenido completo del directorio con AppleScript
Respuesta
Estoy seguro de que hay un comando de shell que puede hacerlo más rápido, pero aquí hay una forma en AppleScript puro que le da control total sobre el formato de la información que le gustaría mostrar.
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
En una nota lateral, también hay un archivo de número que enumera las aplicaciones que pueden hacer esto más rápido que Applescript.
ACTUALIZACIÓN: Como resultado de esta discusión, aquí está la función otra vez, pero esta vez usando la API actualizada. Esto probablemente podría podría utilizar algo de limpieza, pero funciona catalogación de mi escritorio cómodamente suficiente (y eso es una carpeta muy, muy profundo para mí):
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
Debo estar suscrito a las listas de correo de mala calidad o falta uno porque éstos Los cambios API se promulgaron y yo nunca una vez se enteró de ellos. He utilizado mi primer método ofrecido en docenas de proyectos en gran parte porque era el código originalmente ofrecido por Apple, y la falta total de errores al usar esto (incluso en el momento de escribir esto) nunca me provocó la necesidad de actualizar nada .
Turnabout es un juego limpio, y mis disculpas por el rencoroso voto negativo hacia mmcgrail, y lo estoy reemplazando con un voto popular. Para ser claros, nunca pensé que la respuesta dada por mmcgrail fuera incorrecta. Es un excelente método de conveniencia de una línea, pero me he mantenido alejado por mis comentarios ya dados. Pero más bien, fue su voto a la baja y su contexto declarado lo que me ofendió. Al final, es solo código, y creo que todos estamos aquí por la misma razón: para encontrar una mejor manera de hacer lo que hacemos. Parece que ahora tengo algunas actualizaciones propias para promulgar.
Saludos
que es mucho más trabajo de lo necesario. Sé que esto es una entrada antigua pero quiero que tanto para ver lo fácil que puede ser
tell application "Finder"
set file_list to entire contents of (choose folder with prompt "Please select directory.")
end tell
si desea una lista de nombres de archivo, entonces podría hacer esto
tell application "Finder"
set file_list to name of every file of entire contents of (choose folder with prompt "Please select directory.")
end tell
Debido a los comentarios Después de este post pedí a un grupo de expertos en negocios que analizaran esta pregunta y evaluaran nuestra respuesta de manera imparcial y la respuesta que obtuve fue thsis
"¿Qué tal una varicela en sus casas? :-)
Sí, todo el contenido hace exactamente lo que dice, pero se atasca fácilmente en las carpetas grandes de , y demora para siempre (y un día si está en 10.6). Está bien para cosas pequeñas, como extraer todos los archivos de un tipo de una carpeta que saber contendrá solo una pequeña cantidad de archivos.
El método recursivo también funciona bien - pero es el uso de "lista de carpetas", y el listado de Inglés para Dice que es obsoleto y no debe usarlo más "
Así que escucho por. Declaro que estaba equivocado. Ambas soluciones son válidas pero tienen "viruela" o agujeros en sus usos. Mis apologías para Philip.Si decide editar su respuesta (porque esa es la única manera de cambiar mi voto) estaré feliz de regresar y darle 1
Claro, porque una lista masiva de {archivo de documento "nombre de archivo" de la carpeta "SubFolder" de la carpeta "Carpeta" de la carpeta "nombre de usuario" de la carpeta "Usuarios" del disco de inicio de la aplicación "Finder", ad nauseum} y tener que procesar posteriormente * that * es mucho más útil que requerir un down votar por el mío –
lo que está ahí para procesar tienes la lista y su referencia los artículos como sea necesario decir, alias el elemento en la lista de archivos que estás haciendo mucho más trabajo de lo que se necesita es por eso que le di un voto por que no le di a usted de pese donde como eso parece ser lo que estás haciendo – mcgrailm
también su kFileList devuelve una lista de archivos nombrar solamente y ninguna referencia al lugar donde vino el archivo así que lo que luego volver Trough la carpeta de averiguar de dónde vienen? – mcgrailm
¡este es bastante tarde, pero he comprobado y funciona.
tell application "Finder" to set folder_root to (choose folder with prompt "Please select directory.")
set fl to {}
dump_folder(folder_root)
on dump_folder(f)
global fl
tell application "System Events" to set end of fl to (get the POSIX path of f)
tell application "Finder" to set nfl to (the items of the contents of f)
repeat with nf in nfl
dump_folder(nf as alias)
end repeat
end dump_folder
fl
- 1. Obtenga el contenido del módulo
- 2. Python: obtenga el nombre completo del módulo del paquete
- 3. Obtenga el contenido de un directorio del lado del servidor en SAP ABAP
- 4. Obtenga el directorio de trabajo actual del proceso con un pid programáticamente en OS X
- 5. Obtenga el nombre del mes completo en inglés
- 6. Obtenga el nombre completo del dispositivo de audio de Windows
- 7. Contenido del directorio en Haskell
- 8. NSFileManager eliminar contenido del directorio
- 9. Cómo mostrar el contenido del directorio del FTP remoto, recursivamente
- 10. Obtenga el contenido de una carpeta sharepoint con Excel VBA
- 11. Copie un directorio completo con phing
- 12. Servicio de Windows: obtenga el directorio actual
- 13. Obtenga el contenido de NSTextField a escala
- 14. Lista de contenido del directorio (php)
- 15. Comparar el archivo tar del directorio con el directorio original
- 16. Comportamiento raro de irb, listado del contenido del directorio actual
- 17. programas abiertos con applescript
- 18. Buscar el contenido de un directorio
- 19. Android Obtenga el Directorio de datos de la aplicación 'Inicio'
- 20. Obtenga el directorio actual de trabajo para cmd.exe
- 21. PHP Obtenga el contenido de HTTP 400 Response
- 22. Contenido seguro en el directorio de Documentos
- 23. PHP borrar el contenido de un directorio
- 24. Cómo obtener el contenido completo de HttpWebResponse si el contenido devuelto es Transfer-Encoding: chunked?
- 25. Compruebe si el contenido del directorio ha cambiado con script de shell o python
- 26. Cómo obtener el directorio de ruta completo desde el Selector de archivos
- 27. PHP Obtenga el contenido de una URL o página
- 28. Guarde los archivos de SharedPreferences en el directorio personalizado u obtenga el directorio predeterminado de SharedPreferences
- 29. Listado de contenido del directorio usando C y Windows
- 30. Obtenga el directorio más reciente en bash a las variables
vea mi post – mcgrailm
Hice una edición a mi mensaje – mcgrailm
se escribe algo así como "no puede conseguir todos los elementos de disco ..." – user2159978