linux 目录递归遍历
2009-10-28 08:19
447 查看
第一版程序没有过滤掉目录内的文件。原来readdir()不只是读取目录的,这个和它的函数名不一致。
程序通过
lstat(dirp->d_name, &statbuf);
if(S_ISDIR(statbuf.st_mode))来判断文件是否为目录
程序通过
lstat(dirp->d_name, &statbuf);
if(S_ISDIR(statbuf.st_mode))来判断文件是否为目录
#include <iostream> #include "apue.h" #include <dirent.h> using namespace std; void lsDir(char *d_name) { DIR *dp; struct dirent *dirp; struct stat statbuf; char localDir[256]; lstat(d_name, &statbuf); if(!S_ISDIR(statbuf.st_mode)) { return; } if((dp = opendir(d_name)) == NULL) { cout << "cant's open " << d_name << endl; return; } cout << d_name << endl; while((dirp = readdir(dp)) != NULL) { if(strcmp(".", dirp->d_name) == 0 || strcmp("..", dirp->d_name) == 0) { continue; } lstat(dirp->d_name, &statbuf); if(!S_ISDIR(statbuf.st_mode)) { continue; } strcpy(localDir,d_name); strcat(localDir, "/"); strcat(localDir, dirp->d_name); lsDir(localDir); } closedir(dp); } int main(int argc, char* argv[]) { if(argc !=2 ) { cout << "usage:ls directory_name" << endl; return -1; } cout << "argv:" << argv[1] << endl; lsDir(argv[1]); exit(0); }
相关文章推荐
- Linux下文件及目录的一些操作(附递归遍历目录源码)
- Linux下文件及目录的一些操作(附递归遍历目录源码)
- [Linux C]递归遍历指定目录下的子目录和文件
- 递归遍历Linux下的目录文件源码实现
- Linux下递归遍历目录和文件
- linux下递归遍历目录下的文件,实现批量替换
- linux(c)深度优先递归遍历指定目录
- Linux下递归遍历目录和文件
- linux下遍历某个目录的文件,或者文件夹。遍历、递归
- linux目录操作及递归遍历目录
- Linux下递归遍历指定目录下的文件内容并删除的函数实现
- [Linux C]递归遍历指定目录,以目录树形式展示
- Linux下文件及目录的一些操作(附递归遍历目录源码)
- linux文件与目录操作相关API及递归遍历目录
- python实现递归遍历目录(linux下测试通过)
- 递归遍历 SD 卡目录下的所有音乐文件,并点击条目后进入相应的播放界面
- linux下遍历目录
- linux平台下基于C语言实现遍历文件目录
- Lucene:递归遍历目录,对目录中的每个文本文件创建索引
- linux下递归删除目录下所有文件