linux下遍历删除文件夹

来源:互联网 发布:淘宝网买卖中心 编辑:程序博客网 时间:2024/05/16 02:52

#include
#include
#include
#include
#include
#include
#include

#define SIZE 100

int travel(char *path)
{
    charnext_path[SIZE];
    int check =0;
    DIR*dir;
    structdirent *entry;
    structstat  buf;

   if(lstat(path,&buf) < 0)
    {
       printf("stat  directory or file \"%s\": %s (ERROR%d)\n", path, strerror(errno), errno);
       return -1;
    }
   if(!S_ISDIR(buf.st_mode))
    {
       if(unlink(path) < 0)
           printf("remove %s : %s ,%d\n",path,strerror(errno),errno);
       return 0;
    }

    dir =opendir(path);
    if (dir ==NULL)
    {
       printf("$$$$Open directory \"%s\": %s (ERROR %d)\n",
              path, strerror(errno), errno);
      return 1;
    }

    while((entry = readdir(dir)) != NULL)
    {

       if(strcmp(entry->d_name ,"." ) ==0 || strcmp(entry->d_name,".." ) ==0 )
           continue;

       if (entry->d_type == DT_DIR)
       {
           sprintf(next_path,"%s/%s",path,entry->d_name);           
           travel(next_path);
       }
       else
       {
           sprintf(next_path,"%s/%s",path,entry->d_name);
           if(unlink(next_path)<0)
           {
               printf("remove --%s error\n",entry->d_name);
               return 0;
                     
       }
    }
   remove(path);
   closedir(dir);
    if(check ==1)
       return 0;
 return 0;
}

 


int main(int argc ,char *argv[])
{
    char *file;
    charpath[255];
    charname[255];
   int  len = 0;
   int  i = 0;

    if(argc== 1)
    {
       printf("more input please!\n");
       exit(0);
    }
    if(argc ==2)
        
       strcpy(name,argv[1]);
    }
    else
 {
  printf("input error!\n");
  exit(0);
    }
   
    file = (char*)getcwd(argv[1],100);
   path[0]='\0';
   sprintf(path,"%s/%s",file,name);
   travel(path);
    return0;
}

0 0