Sarà un po 'complicato, ma può essere fatto. L'elenco di file restituiti da file-glob per la directory corrente include le sottodirectory. Quindi puoi usare quell'elenco per creare ricorsivamente string più glob, che possono essere passati a file-glob, e così via.
(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)))))
Questo funziona, ma è lento. Forse puoi trovare un modo per renderlo più veloce?
A proposito, restituisce tutti i file, non solo i file JPG. Per fare in modo che restituisca solo JPG, modifica la riga che dice "(aggiungi file (file search-dirs))". Piuttosto che aggiungere "file", filtra i JPG e aggiungi quelli solo.
fonte
2012-01-23 01:42:36
Script-Fu è TinyScheme, che è un interprete di schema molto limitato. Penso che non possa farlo. – ceving
@Smirnov, dai un'occhiata alla mia risposta ... qualcuno finalmente ha capito la risposta alla tua domanda dopo tutti questi mesi! –