2011-10-18 8 views
7

¿Cómo obtengo una lista de archivos (* .jpg) de todas las carpetas, usando Script-FU en GIMP?¿Cómo obtener una lista de archivos (*. Jpg) de todas las carpetas?

(let* ((filelist (cadr (file-glob pattern 1))) 

Esto solo obtiene archivos de la carpeta actual.

+0

Script-Fu es TinyScheme, que es un intérprete de Scheme muy limitado. Creo que no puede hacerlo. – ceving

+0

@Smirnov, mira mi respuesta ... ¡Alguien finalmente descubrió la respuesta a tu pregunta después de todos estos meses! –

Respuesta

2

Será un poco complicado, pero se puede hacer. La lista de archivos que file-glob devuelve para el directorio actual incluye los subdirectorios. Entonces puede usar esa lista para construir recursivamente más cadenas globales, que se pueden pasar a archivo-global, y así sucesivamente.

(define separator "\\") ; I am using Windows 
(define (all-files dir) 
    (let* ((patt (string-append dir separator "*")) 
     (files (cadr (file-glob patt 1)))) 
    (append files (search-dirs files)))) 
(define (search-dirs dirs) 
    (if (null? dirs) 
     (list) 
     (append (all-files (head dirs)) (search-dirs (tail dirs))))) 

Esto funciona, pero es lento. Tal vez puedas encontrar una manera de hacerlo más rápido?

Por cierto, esto devuelve todos los archivos, no solo los JPG. Para que devuelva solo JPG, modifique la línea que dice "(anexar archivos (archivos de búsqueda-directorios))". En lugar de agregar "archivos", filtra los JPG y añádelos solo.

Cuestiones relacionadas