如何从所有文件夹中获取文件列表(*.jpg)?

Smi*_*nov 7 scheme gimp script-fu

如何使用GIMP中的Script-FU从所有文件夹中获取文件列表(*.jpg)?

(let* ((filelist (cadr (file-glob pattern 1)))
Run Code Online (Sandbox Code Playgroud)

这只从当前文件夹中获取文件.

Ale*_*x D 2

这会有点复杂,但可以做到。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)))))
Run Code Online (Sandbox Code Playgroud)

这可行,但速度很慢。也许你可以找到一种让它更快的方法?

顺便说一下,这会返回所有文件,而不仅仅是 JPG。要使其仅返回 JPG,请修改“(append files (search-dirs files))”行。不要附加“文件”,而是过滤掉 JPG 并仅附加它们。