设为首页 加入收藏

TOP

newLISP 递归访问目录树
2014-11-23 21:31:42 来源: 作者: 【 】 浏览:15
Tags: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)))))


注意:


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


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


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Matlab 使用技巧分享 下一篇Ajax异步获得JSON对象后格式化时间

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: