码迷,mamicode.com
首页 > 其他好文 > 详细

newLISP 递归访问目录树

时间:2014-08-31 01:40:50      阅读:257      评论:0      收藏:0      [点我收藏+]

标签:递归   递归算法   正则表达式   newlisp   

一个简单的递归函数,可以遍历目录树中的所有文件,传递另一个处理函数,该函数可以接受文件路径作为参数,从而决定如何处理。

下面是调用例子:


#!/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)))))


注意:

正则表达式 ^[^.] 代表只查找不以.开头的文件或者目录,因此排除了. 和 ..

该递归算法是深度优先算法,一旦发现一个目录,一定会将其下的所有路径都遍历完才会返回到开始, 然后才处理下一个兄弟目录。



newLISP 递归访问目录树

标签:递归   递归算法   正则表达式   newlisp   

原文地址:http://blog.csdn.net/csfreebird/article/details/38952587

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!