有人可以告诉我,如果我正确地找到了目录中的文件数和子目录数吗?另外,如何在终端确认?
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);
}
答案 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,因为..目录不会被计算在内)