linux c 目录和子目录遍历

Linux目录遍历源代码学习与分享
博主尝试学习Linux并改进目录遍历代码,旨在多交流与共同进步。通过详细解析代码,介绍如何使用C语言遍历指定路径下的所有文件及子目录,并输出文件大小与最后修改时间。

最近再看linux方面的知识,话说现在linux前途很好吖,,,所以我也试着学linux,前几天从oschina里看了一个linux c遍历目录的源代码,但发现子目录没有进行遍历,所以进行了修改,希望能多交流学习,本人新手,愿共同进步,高手勿喷~谢拉

#include <stdio.h>  
#include <dirent.h>    
#include <sys/stat.h>
int trave_dir(char *path,int i)
{
    DIR *d;
    struct dirent *file;
    struct stat buf;
    if(!(d=opendir(path)))
    {
        printf("error opendir %s!!!\n",path);
        return -1;
    }
    chdir(path); //一定要打开文件夹,不打开会出现错误
    while((file=readdir(d)) != NULL)
    {
        lstat(file->d_name,&buf);
        if(!(S_IFDIR&buf.st_mode))
        {
        printf("%*s%s\n",i,"",file->d_name);//printf特殊用法  格式输出
        printf("\t\tfile size=%d\n",buf.st_size);
        printf("\t\tfile last modify time=%s\n",asctime(gmtime(&buf.st_mtime)));//先转化成格林威治时间,然后返回tm结构,接着用asctime转化成标准时间(这里 不知到有没有更好的方法)
    }
        else
        {
            if(strcmp(file->d_name,".")==0||strcmp(file->d_name,"..")==0)
                  continue;
            printf("%*s%s(dir)\n",i,"",file->d_name);
            printf("\t\tfile last modify time=%s\n",asctime(gmtime(&buf.st_mtime)));
            trave_dir(file->d_name,i+2);
        }
    }
    chdir("..");
    closedir(d);
    return 0;
}  
int main()
{
    int i;
    trave_dir(".",0);
    return 0;
}


转载于:https://my.oschina.net/u/1013209/blog/114554

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值