日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux下遍历目录下的文件

發布時間:2023/12/19 linux 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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
++;???
???}
???
?}
???

總結

以上是生活随笔為你收集整理的Linux下遍历目录下的文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。