2011-10-18 41 views
7

Làm cách nào để có danh sách tệp (* .jpg) từ tất cả các thư mục, sử dụng Script-FU trong GIMP?Cách lấy danh sách tệp (*. Jpg) từ tất cả các thư mục?

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

Chỉ nhận các tệp từ thư mục hiện tại.

+0

Script-Fu là TinyScheme, một trình thông dịch Scheme rất hạn chế. Tôi nghĩ rằng nó không thể làm điều đó. – ceving

+0

@Smirnov, hãy xem câu trả lời của tôi ... ai đó cuối cùng đã tìm ra câu trả lời cho câu hỏi của bạn sau tất cả những tháng này! –

Trả lời

2

Nó sẽ có một chút phức tạp, nhưng nó có thể được thực hiện. Danh sách tệp trả về tệp cho thư mục hiện tại bao gồm thư mục con. Vì vậy, bạn có thể sử dụng danh sách đó để xây dựng đệ quy nhiều chuỗi tổng thể hơn, có thể được chuyển đến tệp-glob, v.v.

(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))))) 

Điều này có hiệu quả nhưng chậm. Có lẽ bạn có thể tìm cách để làm cho nó nhanh hơn?

Nhân tiện, thao tác này sẽ trả về tất cả các tệp, không chỉ JPG. Để chỉ trả lại JPG, hãy sửa đổi dòng có nội dung "(nối thêm tệp (tệp tìm kiếm-dirs))". Thay vì thêm "tệp", hãy lọc ra các tệp JPG và chỉ thêm các tệp đó.

Các vấn đề liên quan