首页 > 其他 > 详细

递归遍历目录树,并处理文件

时间:2014-04-13 03:44:51      阅读:431      评论:0      收藏:0      [点我收藏+]

之前有一篇文章遍历目录树,清理编译目录,采用了非递归的方法,本文这里给出递归遍历目录的代码,并且可以接受一个函数作为参数,来处理被扫描到的每一个文件。

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

调用举例:

(recursive-access-dir "/home/dean/" println)

注意,第一个参数是目录路径,必须用/结尾。这样,每个文件都会被打印出来。当然也可以提供别的函数,比如编译或者删除等等。

关键是(directory dir-path {^[^.]} 里的正则表达式,因为Linux下直接用directory返回子文件会包含. 和 ..,该正则表达式就是只取不以.开头的子文件。



递归遍历目录树,并处理文件,布布扣,bubuko.com

递归遍历目录树,并处理文件

原文:http://blog.csdn.net/csfreebird/article/details/23511319

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!