如何使用 GIMP 中的 Script-FU 从所有文件夹中获取文件列表 (*.jpg)?
(let* ((filelist (cadr (file-glob pattern 1)))
这只会从当前文件夹中获取文件。
这会有点复杂,但可以做到。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 文件并仅附加这些文件。