递归遍历目录树,并处理文件
2014-04-12 09:01
246 查看
之前有一篇文章遍历目录树,清理编译目录,采用了非递归的方法,本文这里给出递归遍历目录的代码,并且可以接受一个函数作为参数,来处理被扫描到的每一个文件。
(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返回子文件会包含. 和 ..,该正则表达式就是只取不以.开头的子文件。
(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返回子文件会包含. 和 ..,该正则表达式就是只取不以.开头的子文件。
相关文章推荐
- linux多线程非递归遍历文件夹模拟处理文件
- 递归遍历及拷贝文件共享服务器中目录
- PHP递归遍历目录,递归删除目录及文件
- Linux下递归遍历目录和文件
- 自己写的处理文件的类,删除目录,复制目录,遍历目录,获取文件属性,点评一下啊
- ~分析apue程序清单4-7 递归降序遍历目录层次结构,并按文件类型计数 。
- Java中用递归遍历目录下所有文件
- C 语言递归遍历目录下的所有文件
- 冒泡排序 二分排序 while遍历、递归遍历目录与子目录文件
- 递归遍历目录修改文件和目录权限
- linux文件与目录操作相关API及递归遍历目录
- 用Java写一个递归遍历目录下面的所有文件。
- Python Tricks(九)—— 递归遍历目录下所有文件
- MFC递归遍历目录下所有子目录和文件
- VC/MFC 下 递归遍历目录下的所有子目录及文件
- 非递归遍历目录和文件,生成指定文件类型的索引
- PHP递归遍历指定目录的文件并统计文件数量的方法
- CLI递归遍历目录并过滤掉隐藏文件
- PHP递归遍历指定目录的文件并统计文件数量的方法
- 基于Java Socket的文件UpLoad代码(完美版)-用递归解决java的目录树遍历