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

请教:linux下的硬盘文件搜索函数怎么写?(用c or c++)

    来源: 互联网  发布时间:2015-10-20

    本文导语:  请教:linux下的硬盘文件搜索函数怎么写?(用c or c++) 有没有例子,提供一个也好?! | const char* FindFile( const char* dir, const char* name ) { #ifdef PRINT_TREE    static int level=-1;    level++; #endif  ...

请教:linux下的硬盘文件搜索函数怎么写?(用c or c++)

有没有例子,提供一个也好?!

|

const char* FindFile( const char* dir, const char* name )
{
#ifdef PRINT_TREE
   static int level=-1;
   level++;
#endif

   DIR* dirp = opendir(dir);
   if ( dirp != NULL )
   {
      struct dirent* dp;
      while ( (dp = readdir(dirp)) != NULL )
      {
    /*
    ** build filename
    */
         char filename[ NAME_MAX+1 ];
    strcpy (filename, dir);
    strcat (filename, "/");
    strcat (filename, dp->d_name);

    /*
    ** get file type
    */
    struct stat buf;
    if ( stat (filename, &buf) == 0 )
         {
#ifdef PRINT_TREE
            for ( int i=0; id_name );
       if (S_ISDIR(buf.st_mode))
               printf("/");
            printf("n");
#endif

       if (S_ISREG(buf.st_mode) && stricmp(dp->d_name, name) == 0)
            {
               closedir(dirp);
#ifdef PRINT_TREE
               level--;
#endif
               char* result = new char [strlen(filename)+1];
               strcpy( result, filename );
               return result;
            }
       else if (S_ISDIR(buf.st_mode) && strcmp (dp->d_name, ".") &&
       strcmp (dp->d_name, ".."))
       {
       const char* found = FindFile( filename, name );
               if ( found != NULL )
               {
                  closedir(dirp);
#ifdef PRINT_TREE
                  level--;
#endif
                  return(found);
               }
       }
         }
      }
      closedir(dirp);
   }
#ifdef PRINT_TREE
   level--;
#endif
   return(NULL);
}


|
struct dirent
              {
                  long d_ino;                 /* inode number */
                  off_t d_off;                /* offset to this dirent */
                  unsigned short d_reclen;    /* length of this d_name */
                  char d_name [NAME_MAX+1];   /* file name (null-terminated) */
              }
到底需求是什么?
有些东西是可以调用系统完成的

|
用c写不麻烦.

专职接分, 兼职回答

DIR *hpDir;
struct dirent *currFP = 0;

hpDir = opendir(你要找的目录);

if (hpDir == NULL){
return -1;
}

while ((currFP = readdir(hpDir)) != 0){
if (currFP->d_name == 你要找的东西 ){
//处理
}
}

|
system("find / -name filename >findout");
然后读文件findout就可以了。

用c来写估计比较麻烦吧。

|
看看find的源代码

|
opendir,readdir,fstat

http://linux.chinaunix.net/doc/program/2001-05-08/577.shtml

|
专业顶贴 兼职接分

|
up

|
up

    
 
 

您可能感兴趣的文章:

  • 请教学习c++有那些经典书籍?
  • 请教:unix或linux下的c++标准库在哪个目录??谢谢!
  • 请教: linux下用c++写最简单的socket程序如何写?
  • linux菜鸟请教:C++的学习
  • 请教:SCO OpenServer(TM) Release下能进行C++开发吗?
  • 请教个unix下c++编译器的问题
  • 请教:linux下C++与Flash怎么通讯
  • ¥¥¥¥¥请教,什么是LINUX上最好的C++集成开发环境
  • 请教一个关于C++的基础问题
  • 新手请教:请问如何将以前Windows平台下的c++工程改造到linux系统平台下
  • 请教为什么在C++编译通过并实现的程序,在linux下就会出错
  • 请教,linux下,C/C++编程时候默认的中文编码是什么?
  • 请教Linux下多线程C++编程
  • 请教linux下C++编译环境
  • 请教一个linux c++调试问题(关于内存泄露)
  • 请教:在solaris下测试C++程序是否存在内存泄漏等问题用什么测试工具?
  • 请教几个Linux下C++问题
  • 请教关于用c编译出来的.a文件和用c++编译出来的.a文件的互用问题
  • c++程序中使用pthread编译不过,请教大家?????
  • 请教各位大虾:Red Hat Linux 9.0中编译C++程序出现:/usr/bin/ld: cannot find -lm
  • 高分请教:怎样在Kdevelop不能够Trace构造函数?(其他函数可以Trace)
  • 请教:javascript 里有没有时间循环执行的函数,如我按住鼠标触发mousedown 事件函数时,反复执行我写的一个函数?
  • 请教semop()函数的用法、含义
  • 请教套接字中的select()函数问题
  • 请教一个函数入口处的汇编问题(压栈问题)
  • 请教一个关于ftw函数的问题!
  • 100分请教高手一个bash函数
  • 请教signal函数的用法!
  • 请教exec系列函数的用法
  • 请教UNIX C字符输入的检测函数?
  • 请教关于dlopen,动态库连接程序的输出函数
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教本地硬盘安装问题请教本地硬盘安装问题
  • 请教一下,我想在IBM X306m 硬盘是SATA 硬盘,服务器上安装openSUSE 10.3,为什么老是检测不到硬盘啊。。我该怎么办呀??
  • 高手看过来:请教如何在移动硬盘上安装Linux?
  • 请教我这样的情况正常吗?3块硬盘从fdisk -l看正常,但是
  • 请教笔记本LINUX FEDORA 3 挂载移动硬盘问题
  • 请教两个硬盘怎么装lilo,具体请进。
  • 高分请教!如何把两个硬盘挂载到同一目录下!
  • 关於在硬盘上安装windows和linux的问题,请教
  • 关于硬盘安装radhat7.3的几个问题?请教大虾
  • 请教高手关于双硬盘安装双操作系统的问题!
  • 请教安装oracle9i的分区建议,硬盘只有10-15G
  • 有人会mandrake吗?我下了9.2是ISO文件,我有软盘,请教怎样从硬盘安装???
  • 高分请教,关于虚拟硬盘
  • 我是新手,请教LINUX下的硬盘最佳分区方案
  • ubuntu 硬盘安装问题 请教~~
  • 请教关于Linux硬盘设备名称的问题
  • 请教:服务器安装CentOS精简版系统,找不到硬盘
  • 请教。REDHAT中如何查看硬盘剩余空间?
  • 请教高手这是不是硬盘问题
  • 请教为什么不能挂载硬盘!
  • 请教,请教,这个问题是为什么????
  • ■请教■请教redhat最基本的问题!
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 高分请教,各位大侠,请教一个问题,理论高手请进??谢谢
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 请教,请教,,,一定要看!!一定要看!!
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)
  • 请教这种循环的执行过程


  • 站内导航:


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

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

    浙ICP备11055608号-3