#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命令大全“了解命令
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)