歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> newLISP 遞歸訪問目錄樹

newLISP 遞歸訪問目錄樹

日期:2017/3/1 9:40:32   编辑:Linux編程

一個簡單的遞歸函數,可以遍歷目錄樹中的所有文件,傳遞另一個處理函數,該函數可以接受文件路徑作為參數,從而決定如何處理。

下面是調用例子:

#!/usr/bin/newlisp

(load "file.lsp") (define (show-file file-path) (println (string file-path ": " (file-info file-path))) ) (FILE:recursive-access-dir "/opt/" show-file)

(exit)

recursive-access-dir就是遞歸函數, show-file是另一個函數,顯示了接收的文件路徑和file-info信息。

(context 'FILE)

(define (recursive-access-dir dir-path file-op) (dolist (nde (directory dir-path {^[^.]})) (if (directory? (append dir-path nde)) (recursive-access-dir (append dir-path nde "/") file-op) (file-op (append dir-path nde)))))

注意:

正則表達式 ^[^.] 代表只查找不以.開頭的文件或者目錄,因此排除了. 和 ..

該遞歸算法是深度優先算法,一旦發現一個目錄,一定會將其下的所有路徑都遍歷完才會返回到開始, 然後才處理下一個兄弟目錄。

為Emacs配置newLISP開發環境 http://www.linuxidc.com/Linux/2013-01/78463.htm

newLISP做GitLab系統備份 http://www.linuxidc.com/Linux/2013-01/78464.htm

newLISP 遍歷目錄樹,清理編譯目錄 http://www.linuxidc.com/Linux/2013-08/88954.htm

newLISP 的詳細介紹:請點這裡
newLISP 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved