2013-09-26 24 views

回答

2

例如有:

find /your/path -name "foo.db.*" 

它将匹配/your/path结构中名称类似的所有文件。

如果db.后的文本始终是一个数字,你可以这样做:

find /your/path -name "foo.db.[0-9]*" 

您还可以使用ls:他的名字就像是foo.db.<number>甚至

ls -l /your/path/ls.db.[0-9] 

获取文件夹

ls -l /your/path/ls.db.[0-9]* 

获取名称类似的文件

+1

谢谢,如何将它与C++代码结合?我想在C++中获得完整的文件名 – user1853170

+0

你现在有什么代码? – fedorqui

+0

其实......人们对如何在C++中做到这一点更加好奇。我猜bash通过为发现的不同文件多次运行一个程序来为我们做到这一点。 – Chen

0

这样做:

find /filepath -name "foo.db*" 

在C/C++,你可以这样做:

void findFile(const char *path) 
{ 
    DIR *dir; 
    struct dirent *entry; 
    char fileName[] = "foo.db"; 

    if (!(dir = opendir(path))) 
     return; 
    if (!(entry = readdir(dir))) 
     return; 

    do { 
     if (entry->d_type == DT_DIR) { 
      char path[1024]; 
      int len = snprintf(path, sizeof(path)-1, "%s/%s", path, entry->d_name); 
      path[len] = 0; 
      if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) 
       continue; 


      if(strstr(fileName, entry->d_name) != NULL) { 
       printf("%s\n", "", entry->d_name); 
      } 
      findFile(path); 
     } 
     else 
      printf(" %s\n", "", entry->d_name); 
    } while (entry = readdir(dir)); 
    closedir(dir); 
} 
相关问题