C:如何列出目录中文件和子目录的数量

时间:2015-05-07 07:36:46

标签: c file directory

有人可以告诉我,如果我正确地找到了目录中的文件数和子目录数吗?另外,如何在终端确认?

main(int n, char *path[]){
//count the number of files and subdirectories
int fileCount = 0;
int dirCount = 0;
DIR *dp;
struct dirent *dir;

  int i;
  for(i = 1; i < n; i++){
        dp = opendir(path[i]);
        if(dp==NULL)
          continue;
        while((dir = readdir(dp)) != NULL){
          if(dir->d_type == DT_REG){
                fileCount++;
          }
          if(dir->d_type == DT_DIR)
                dirCount++;
        }
         printf("%s: file count is: %d and dir count is: %d\n",path[i], fileCount, dirCoun$
  }
// printf("file count is: %d and dir count is: %d", fileCount, dirCount);

closedir(dp);
}

1 个答案:

答案 0 :(得分:0)

你的程序看起来合法(除了拼写错误)。

要在编译后在终端上测试它,只需输入

即可

$./program-name DIR

(例如,当前目录的$./program-name .)。

它将计算包含隐藏文件和文件的文件和目录。和..特殊目录。它不会在子目录中重复出现。 * NIX命令计算目录中的文件(包括隐藏文件)而不递归:

$find DIR -type f -maxdepth 1 | wc -l

而不是计算目录

$find DIR -type d -maxdepth 1 | wc -l

(注意:您必须在目录计数中加1,因为..目录不会被计算在内)