自己写的一个LINUX 下目录文件遍历程序

本文介绍了一个使用C语言编写的程序,该程序可以在Linux环境下遍历指定目录及其子目录中的文件。通过调用`lsdir`函数,程序会递归地列出所有非`.`和`..`的文件和子目录。`lsdir`函数利用了`opendir`、`readdir`和`stat`等系统调用来获取和显示文件信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <stdio.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <dirent.h>
#include <stdlib.h>
#include <sys/types.h>
int lsdir(char *filepath , int ntap)
{
 struct stat  buf ;
 struct dirent *direntp;
 DIR *dir;
 char path[100];
 int i;
 if((dir =  opendir(filepath))==NULL)
  {
   printf("opendir error!/n");
   exit (0);
  }
 
 char tb[100];
 memset(tb,'/0',100);
 for(i=0;i<ntap;i++)
  {
   tb[i]='/t';
  }
    while((direntp = readdir(dir)) != NULL)
    {
     if(strcmp( ".",direntp->d_name) == 0 || strcmp( "..",direntp->d_name) == 0)
   {
    continue;
   }   
      strcpy(path,filepath);
         strcat(path,"/");
  strcat(path,direntp->d_name);
  //printf("path=%s/n",path);
         stat(path,&buf);//获取文件属性
         //printf("aaaaaa/n");
         //filepath = strcat(filepath,direntp->d_name); //获取新的文件路径
  
         //printf("%s/n",direntp->d_name);

         if(S_ISDIR(buf.st_mode))
  {
   //排除当前目录和上级目录
   //如果是子目录,递归调用函数本身,实现子目录中文件遍历
   printf( "%s%s//n", tb, direntp->d_name);
   //递归调用,遍历子目录中文件
   lsdir( path, ntap+1); 
  }
  else
  {
   printf( "%s%s/n", tb, direntp->d_name);
  }       
 }
 closedir(dir);
 return 1;
}
 


int main(int argc,char *argv[])
{
  lsdir(argv[1],0);
  return 1;
       

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值