当前位置:  技术问答>linux和unix

Linux下怎样遍历整个目录文件?(分不够,绝对加!)

    来源: 互联网  发布时间:2014-12-12

    本文导语:  对于Linux下的某个目录,我想遍历这个目录中的所有文件,并且得到每个文件的属性(例如:创建、修改时间,大小等)。注意:目录中可能有子目录!希望能有源代码!先谢谢!我得Email:fuyuan_hu@sina.com ...

对于Linux下的某个目录,我想遍历这个目录中的所有文件,并且得到每个文件的属性(例如:创建、修改时间,大小等)。注意:目录中可能有子目录!希望能有源代码!先谢谢!我得Email:fuyuan_hu@sina.com

|
void check_dir(char* dirname)
{
  DIR* p;
  struct dirent* dirlist;
  struct stat filestat;
  char indir[1024];
  
  p=opendir(dirname);
  while((dirlist=readdir(p))!=NULL) 
  {
    sprintf(indir,"%s/%s",dirname,dirlist->d_name);
    stat(indir,&filestat);
    if(S_ISREG(filestat.st_mode)) 
    {
      printf("%sn",indir);
    }
    else 
    {
      if(S_ISDIR(filestat.st_mode)&&dirlist->d_name[0]!='.') 
      {
check_dir(indir);
      }
    }
  }
}

|
#include 
#include 
#include 
void do_search_dir(char *path) {
  DIR *dir;
  char fullpath[1024],currfile[1024];
  struct dirent *s_dir;
  struct stat file_stat;
  strcpy(fullpath,path);
  dir=opendir(fullpath);
  while ((s_dir=readdir(dir))!=NULL) {
    if ((strcmp(s_dir->d_name,".")==0)||(strcmp(s_dir->d_name,"..")==0)) continue;
    sprintf(currfile,"%s/%s",fullpath,s_dir->d_name);
    stat(currfile,&file_stat);
    if (S_ISDIR(file_stat.st_mode))
      do_search_dir(currfile);
    else
      printf("%sn",currfile);
  }
  closedir(dir);
}
int main(int argc,char **argv) {
  do_search_dir(argv[1]);
}
注:上面的程序是随手写的,有可能有一些bug和错误。但框架基本是这样的。

|
opendir()
readdir()
closedir()

stat()

递归执行.

|
/*这是我的删除目录及其子目录下的文件的函数,曾在红帽linux下通过,看是否能帮上你*/


#include 
#include 

#define DWORD unsigned short;
#define BYTE  unsigned char;

DWORD API_DelDir(BYTE *Path)
{
   DIR           *dirp;
   struct dirent *dp;
   BYTE          cPath[256];
   struct stat   pStat;

   if((dirp = opendir(Path)) == NULL)
   {
      printf("The dir %s is not exit!n",Path);
      return SUCCESS;
   }
   while ((dp = readdir( dirp )) != NULL )
   {
      if ((strcmp(dp->d_name,".")==0)||(strcmp(dp->d_name,"..")==0))
        continue;

      strcpy(cPath,Path);
      strcat(cPath,"/");
      strcat(cPath,dp->d_name);

      if (stat(cPath,&pStat) == -1)
      {
         if(GV_ucDebug)
         {
             perror("stat:");
             printf("get stat %s err!n",cPath);
         }
         closedir(dirp);
         return FAILURE;
      }
      if ((pStat.st_mode & S_IFMT) == S_IFDIR)
      {
         if(API_DelDir(cPath)!=OMC_SUCCESS)
         {
              closedir(dirp);
              return FAILURE;
         }
      }
      else
      {
         if (unlink(cPath)==-1)
         {
             
           perror("unlink");
           printf("%s n",cPath);
           
           closedir(dirp);
           return FAILURE;
         }
      }
    }
    closedir(dirp);
    if (rmdir (Path) ==-1)
    {
        if(GV_ucDebug)
        {
          perror ("rmdir");
          printf(" %s n",Path);
        }
        return FAILURE;
    }
      return SUCCESS;
}/*End Func */

|
一个简单的仿ls程序:

#include 
#include 

int main(int argc, char *argv[])
{
    DIR    *mydir;
    struct dirent *mydirp;
    if ( argc != 2 )
      printf("请带一个目录再执行");
    if (( mydir = opendir( argv[1] )) ==NULL )
      {
         printf("can't open %s", argv[1]);
         exit(1);
      }
    while (( mydirp = readdir( mydir )) != NULL )
      printf("%sn", mydirp->d_name);
    closedir( mydir );
    exit(0);
}

|
我是用PHP写的,为了生成资源管理器式的web界面用的.
所是echo 出来很多是javascript的涵数,
从算法来讲这应该算一个先序遍历吧.


    
 
 

您可能感兴趣的文章:

  • 求助大家帮忙编写linux遍历进程程序
  • 如何在linux下用c/c++边编程实现文件夹下所有子目录文件的遍历?
  • 在linux下如何实现文件夹的遍历?
  • 谁能给我一段linux下遍历文件夹读取所有文件名的程序?或者帮我看看我的
  • 深入探讨:linux中遍历文件夹下的所有文件
  • 深入linux下遍历目录树的方法总结分析
  • linux 安装weblogic时提示权限不够
  • 在LINUX下安装TOMCAT后,root运行提示权限不够。
  • Linux有多大?我的硬盘还有2G,够不够装?
  • Linux下安装Oracle 10G提示“bad interpreter: 权限不够”的解决
  • 在linux下装oracle9i到了最后时候,提示/tmp空间不够了,怎么增加,谢谢!
  • linux高手请帮忙,QQ上提问,完了给200分..不够再加
  • 寻求在Linux 8.0上安装Oracle 9i的安装文档,分不够,可以再加,在线等待。。。
  • linux下socket编程高手请进(分不够再加)
  • redhat linux 7.1 字符方式下(not xwindown/kde)汉化如何实现?? ucdos汉字输入、显示的原理??分不够可在加!!!
  • 我在linux下有几个分区。现在发现其中一个分区不够用了。我能不能把其他分区的空间弄过来?
  • 关于linux下网桥的配置问题。答者有分!答对者,不够再加
  • Linux可执行文件权限不够问题,请指教
  • linux 安装是提:将安装映像传输到硬盘时出错,很可能是磁盘空间不够。
  • [100分]linux 9.0下如何配置确省的tftp服务,怎样设置上传目录,最好详细一点,谢谢,分不够可再加!
  • 紧急求助!!!Linux 下 /var 空间不够 !!???
  • sprintf函数的第一参数字符缓冲区为何分配空间不够,在linux运行也不出现内存错误?
  • 我在虚拟机中装linux,原来设了硬盘为4G,但现在不够用了,于是我加了一个6G的虚拟盘,但是现在怎么将一部分东西保存在新盘上呢
  • 决定开始看LINUX代码~探讨有分~分不够再砸~
  • 深入理解linux内核第三版中文版 不够可以再加分
  • 重分求解,不够可加,关于linux分区大小调节的问题!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux_centos_redhat下tar命令解压tgz文件方法
  • 用java读中文linux中的文件是正确的,用java读英文linux版本中的文件是乱码,如何使英文linux读出的文件数据也是中文的?
  • linux下nm命令(显示可执行文件的符号信息)介绍以及常见nm命令用法举例
  • Linux查找包含指定文字的文件(linux查找指定文件)
  • Linux下c函数dlopen实现加载动态库so文件代码举例
  • 请问LINUX内核下,哪些文件夹下的文件是跟LINUX的硬件平台无关的?
  • mount命令(linux操作系统)挂载卸载文件系统(cifs,光驱,nfs等)方法介绍
  • 请问各位linux开发大虾,linux下有类似VC中depends的工具可以查看文件调用了哪些so文件吗?
  • linux内存文件系统ramfs实现原理
  • 急::在Linux下怎么根据另一台windows或linux的文件名,去得到这个文件
  • linux/Centos/ubuntu下如何使用umask命令修改新建文件时的默认权限
  • 我的机器装了WINDOWS2000 和 LINUX 7.3 , 请问在LINUX 中如何访问`WIN2K中的文件?同样在WIN2K中如何访问LINUX 中的文件?
  • Linux内存文件系统(ramdisk)的三种实现方式
  • 请问如何在WINDOWS中访问linux下的文件,并把Windows下的文件复制到linux下的分区中
  • 根据文件大小查找文件的find命令举例(Linux,centos,redhat)
  • linux下copy文件通常又些文件名的大小写会发生变化的,而linux又对大小写敏感,如何解决这一问题
  • Linux下glibc库文件锁:协同锁(advisory lock)和强制锁(mandatory lock)
  • Redhat Linux下用c怎么可以知道一个文件是文件夹还是真的文件?
  • Linux下u盘文件系统相关操作
  • [提问]Linux下如何把多个.a文件编译一个.so文件,或者把多个.so文件编译成一个.so文件
  • linux下find查找文件命令详细介绍及find文件用法举例说明
  • linux中对文件排序的命令(文件夹中包含子文件)
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    linux 安装是提:将安装映像传输到硬盘时出错,很可能是磁盘空间不够。 iis7站长之家