之前有一篇文章遍历目录树,清理编译目录,采用了非递归的方法,本文这里给出递归遍历目录的代码,并且可以接受一个函数作为参数,来处理被扫描到的每一个文件。
(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返回子文件会包含. 和 ..,该正则表达式就是只取不以.开头的子文件。
原文:http://blog.csdn.net/csfreebird/article/details/23511319