2011-10-18 5 views
7

김프에서 Script-FU를 사용하여 모든 폴더에서 파일 목록 (* .jpg)을 얻으려면 어떻게해야합니까?모든 폴더에서 파일 목록 (* .jpg)을 얻는 방법은 무엇입니까?

(let* ((filelist (cadr (file-glob pattern 1))) 

이것은 현재 폴더의 파일 만 가져옵니다.

+0

Script-Fu는 TinyScheme이며 매우 제한적인 Scheme 인터프리터입니다. 나는 그것을 할 수 없다고 생각한다. – ceving

+0

@Smirnov, 내 대답을 확인하십시오 ... 누군가가 마침내이 모든 달 후에 귀하의 질문에 대한 답변을 알아 냈어! –

답변

2

약간 복잡 할 수 있지만 수행 할 수 있습니다. file-glob가 현재 디렉토리에 대해 반환하는 파일 목록 에는 하위 디렉토리가 포함됩니다. 그래서이 목록을 재귀 적으로 더 많은 glob 문자열을 만들어서 파일 - 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 만 반환하도록하려면 "(파일 추가 (search-dirs 파일) 추가")라는 줄을 수정하십시오. "파일"을 추가하는 대신 JPG를 필터링하고 추가하십시오.