Как получить список файлов (*. JPG) из всех папок?
Вопрос
Как получить список файлов (*.jpg) из всех папок, используя Script-Fu в Gimp?
(let* ((filelist (cadr (file-glob pattern 1)))
Это получает только файлы из текущей папки.
Решение
Это будет немного сложно, но это можно сделать. Список файлов, который файл-клетка возвращает для текущего каталога включает подкатания. Таким образом, вы можете использовать этот список, чтобы рекурсивно построить больше строк глобуса, которые могут быть переданы в файл-глоба, и так далее.
(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, измените строку, которая говорит «(добавление файлов (файлы search-dirs))». Вместо того, чтобы добавлять «файлы», отфильтроровать JPG и добавить только их.