linux下C语言怎么统计某个目录下的文件个数

linux下C语言怎么统计某个目录下的文件个数,第1张

#include <stdio.h>

#include <stdlib.h>

#include <燃岩拆dirent.h>

#include <errno.h>

#include <string.h>

#define MAX 1024

int get_file_count(char *root)

{

DIR *dir

struct dirent * ptr

int total = 0

char path[MAX]

dir = opendir(root)/* 打开目录*/

if(dir == NULL)

{

perror("fail to open dir")

exit(1)

}

errno = 0

while((ptr = readdir(dir)) != NULL)

{

//顺序读取每一个目录项;

//跳过“..”和“.”两个目录

if(strcmp(ptr->d_name,".") == 0 || strcmp(ptr->d_name,"..") == 0)

{

continue

}

//printf("%s%s/n",root,ptr->d_name)

//如果是目录,则递归调用 get_file_count函数

if(ptr->d_type == DT_DIR)

{

sprintf(path,"%s%s/",root,ptr->皮枣d_name)

//printf("%s/n",path)

total += get_file_count(path)

}

if(ptr->d_type == DT_REG)

{

total++

printf("%s%s/n",root,ptr->d_name)

}

}

if(errno != 0)

{

printf("fail to read dir") //失败则输出提示信息枣举

exit(1)

}

closedir(dir)

return total

}

int main(int argc, char * argv[])

{

int total

if(argc != 2)

{

printf("wrong usage/n")

exit(1)

}

total = get_file_count(argv[1])

printf("%s ha %d files/n",argv[1],total)

return 0

}

可以使用如下方法:

1、ls -l |grep "^-"|wc -l或find ./company -type f | wc -l

查看某文件夹下文件的个数,包括子文件夹里的。

2、ls -lR|grep "^-"|wc -l

查看某文件夹下文件夹的个数,包括子文件夹里的。

3、ls -lR|grep "^d"|wc -l

说明:

ls -l长列空橘表输出该目录下文件信息(注州亏源意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等)

grep "^-"

这里册态将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d

wc -l

统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。可参考”Linux命令大全“了解命令


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/tougao/8161150.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存