Это будет немного сложно, но это можно сделать. Список файлов, которые file-glob возвращает для текущего каталога , включает в себя подкаталоги. Таким образом, вы можете использовать этот список для рекурсивного построения большего количества строк glob, которые можно передать в file-glob и т. Д.
(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)))))
Это работает, но медленно. Возможно, вы сможете найти способ сделать это быстрее?
Кстати, это возвращает все файлы, а не только JPG. Чтобы он возвращал только файлы JPG, измените строку с надписью «(добавить файлы (файлы поиска)». Вместо добавления «файлов» отфильтруйте JPG и добавьте только эти.