Linux下遍历目录下的文件
生活随笔
收集整理的這篇文章主要介紹了
Linux下遍历目录下的文件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
方法1:
http://tag.csdn.net/Article/ef431d9b-68b3-419f-9f85-1fb9279f904a.html
//ListFile.cpp
#include?<stdio.h>
#include?<dirent.h>
#include?<sys/types.h>
int?main(int?argc,?char?*argv[]){
?if?(2?!=?argc){
?printf("Usage:ListFileSourceFolder?");????????
?return?1;
}????
??DIR*?pDir?=?NULL;
??struct?dirent*?ent?=?NULL;
??pDir?=?opendir(argv[1]);
??if?(NULL?==?pDir){
???printf("Source?folder?not?exists!");????????return?1;
}????
while?(NULL?!=?(ent=readdir(pDir)))??{
?printf("%s?",?ent->d_name);
}?
closedir(pDir);
pDir?=?NULL;
方 //ListFile.cpp
#include?<stdio.h>
#include?<dirent.h>
#include?<sys/types.h>
int?main(int?argc,?char?*argv[]){
?if?(2?!=?argc){
?printf("Usage:ListFileSourceFolder?");????????
?return?1;
}????
??DIR*?pDir?=?NULL;
??struct?dirent*?ent?=?NULL;
??pDir?=?opendir(argv[1]);
??if?(NULL?==?pDir){
???printf("Source?folder?not?exists!");????????return?1;
}????
while?(NULL?!=?(ent=readdir(pDir)))??{
?printf("%s?",?ent->d_name);
}?
closedir(pDir);
pDir?=?NULL; 法2:
http://topic.csdn.net/t/20051221/16/4472968.html
試試下面的代碼,我是在redhat上編譯運行的。???
????
??//g++???-o???read_dir???read_dir.cpp???
??//用于列出參數目錄下的文件???
????
??#include???<stdio.h>???
??#include???<stdlib.h>???
????
??#include???<sys/types.h>???
??#include???<dirent.h>???
????
??int?main(int?argc,??char*argv[])???
??{???
??DIR?*dp;???
??struct???dirent???*dirp;???
????
??if(argc?!=?2)???
??{???
??printf("not???enough???arguments!???exit!\n");???
??exit(0);???
??}???
????
??if((dp?=opendir(argv[1]))==?NULL)???
??{???
??printf("can't???open???%s!\n",argv[1]);???
??exit(0);???
??}???
????
??while((dirp?=?readdir(dp))!=NULL)???
??printf("%s\n",dirp->d_name);???
????
??closedir(dp);???
??}???
??
方法3
#include???<stdio.h>???
??#include???<dirent.h>???
??#include???<sys/types.h>???
??#include???<sys/stat.h>???
????
??void??dir_scan(char?*path,?char?*file);???
??int?count?=?0;???
????
?int?main(int?argc,?char?*argv[])???
?{???
??struct???stat???s;???
??if(argc???!=???2){???
???printf("one???direction???requried\n");???
???exit(1);???
??}???
??if(lstat(argv[1],?&s)?<?0){???
???printf("lstat???error\n");???
???exit(2);???
?}???
?if(!S_ISDIR(s.st_mode)){???
??printf("%s?not?direction?name\n",argv[1]);???
??exit(3);???
}???
?dir_scan("",???argv[1]);???
????
?printf("total:?%d?files\n",??count);???
?exit(0);???
?}???
????
void?dir_scan(char?*path,cha日?*file)???
?{???
??struct??stat?s;???
??DIR?*dir;???
??struct???dirent???*dt;???
??char???dirname[50];???
????
??memset(dirname,0,50*sizeof(char));???
??strcpy(dirname,path);???
????
??if(lstat(file,?&s)<0){???
???printf("lstat???error\n");???
??}???
????
??if(S_ISDIR(s.st_mode)){???
???strcpy(dirname+strlen(dirname),?file);???
???strcpy(dirname+strlen(dirname),?"/");???
???if((dir?=?opendir(file))?==?NULL){???
????printf("opendir???%s/%s???error\n");???
????exit(4);???
???}???
??if(chdir(file)?<?0)?{???
????printf("chdir???error\n");???
????exit(5);???
??}???
??while((dt?=?readdir(dir))!=?NULL){???
??????????????????????????????????????????????????if(dt->d_name[0]???==???'.'){???
????continue;???
??}?
??
??dir_scan(dirname,dt->d_name);???
}???
??if(chdir("..")?<??0){???
??printf("chdir???error\n");???
??exit(6);???
?}???
}else{??
??printf("%s%s\n",???dirname,???file);???
???count++;???
???}???
?}???
http://tag.csdn.net/Article/ef431d9b-68b3-419f-9f85-1fb9279f904a.html
//ListFile.cpp
#include?<stdio.h>
#include?<dirent.h>
#include?<sys/types.h>
int?main(int?argc,?char?*argv[]){
?if?(2?!=?argc){
?printf("Usage:ListFileSourceFolder?");????????
?return?1;
}????
??DIR*?pDir?=?NULL;
??struct?dirent*?ent?=?NULL;
??pDir?=?opendir(argv[1]);
??if?(NULL?==?pDir){
???printf("Source?folder?not?exists!");????????return?1;
}????
while?(NULL?!=?(ent=readdir(pDir)))??{
?printf("%s?",?ent->d_name);
}?
closedir(pDir);
pDir?=?NULL;
方 //ListFile.cpp
#include?<stdio.h>
#include?<dirent.h>
#include?<sys/types.h>
int?main(int?argc,?char?*argv[]){
?if?(2?!=?argc){
?printf("Usage:ListFileSourceFolder?");????????
?return?1;
}????
??DIR*?pDir?=?NULL;
??struct?dirent*?ent?=?NULL;
??pDir?=?opendir(argv[1]);
??if?(NULL?==?pDir){
???printf("Source?folder?not?exists!");????????return?1;
}????
while?(NULL?!=?(ent=readdir(pDir)))??{
?printf("%s?",?ent->d_name);
}?
closedir(pDir);
pDir?=?NULL; 法2:
http://topic.csdn.net/t/20051221/16/4472968.html
試試下面的代碼,我是在redhat上編譯運行的。???
????
??//g++???-o???read_dir???read_dir.cpp???
??//用于列出參數目錄下的文件???
????
??#include???<stdio.h>???
??#include???<stdlib.h>???
????
??#include???<sys/types.h>???
??#include???<dirent.h>???
????
??int?main(int?argc,??char*argv[])???
??{???
??DIR?*dp;???
??struct???dirent???*dirp;???
????
??if(argc?!=?2)???
??{???
??printf("not???enough???arguments!???exit!\n");???
??exit(0);???
??}???
????
??if((dp?=opendir(argv[1]))==?NULL)???
??{???
??printf("can't???open???%s!\n",argv[1]);???
??exit(0);???
??}???
????
??while((dirp?=?readdir(dp))!=NULL)???
??printf("%s\n",dirp->d_name);???
????
??closedir(dp);???
??}???
??
方法3
#include???<stdio.h>???
??#include???<dirent.h>???
??#include???<sys/types.h>???
??#include???<sys/stat.h>???
????
??void??dir_scan(char?*path,?char?*file);???
??int?count?=?0;???
????
?int?main(int?argc,?char?*argv[])???
?{???
??struct???stat???s;???
??if(argc???!=???2){???
???printf("one???direction???requried\n");???
???exit(1);???
??}???
??if(lstat(argv[1],?&s)?<?0){???
???printf("lstat???error\n");???
???exit(2);???
?}???
?if(!S_ISDIR(s.st_mode)){???
??printf("%s?not?direction?name\n",argv[1]);???
??exit(3);???
}???
?dir_scan("",???argv[1]);???
????
?printf("total:?%d?files\n",??count);???
?exit(0);???
?}???
????
void?dir_scan(char?*path,cha日?*file)???
?{???
??struct??stat?s;???
??DIR?*dir;???
??struct???dirent???*dt;???
??char???dirname[50];???
????
??memset(dirname,0,50*sizeof(char));???
??strcpy(dirname,path);???
????
??if(lstat(file,?&s)<0){???
???printf("lstat???error\n");???
??}???
????
??if(S_ISDIR(s.st_mode)){???
???strcpy(dirname+strlen(dirname),?file);???
???strcpy(dirname+strlen(dirname),?"/");???
???if((dir?=?opendir(file))?==?NULL){???
????printf("opendir???%s/%s???error\n");???
????exit(4);???
???}???
??if(chdir(file)?<?0)?{???
????printf("chdir???error\n");???
????exit(5);???
??}???
??while((dt?=?readdir(dir))!=?NULL){???
??????????????????????????????????????????????????if(dt->d_name[0]???==???'.'){???
????continue;???
??}?
??
??dir_scan(dirname,dt->d_name);???
}???
??if(chdir("..")?<??0){???
??printf("chdir???error\n");???
??exit(6);???
?}???
}else{??
??printf("%s%s\n",???dirname,???file);???
???count++;???
???}???
?}???
總結
以上是生活随笔為你收集整理的Linux下遍历目录下的文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: myeclipse试用小记----Hib
- 下一篇: 2020-3-16