1、登录Linux系统之后打开终端,确定你要找关键字的目录。
2、查看下当前目录下所有的文件,你所要找的关键字就在当前目录下某个文件里面。
3、find -type f -print这个命令可以列出当前目录下的所有文件。
4、type后面的f是file的意思,所以只列出文件,而排除文件夹。
5、接下来只要在find命令后面加上exec命令就可以实现。
1、系统里面没有/usr/keygoe/ini文件夹或没有权限。可以修改main, 遍历命令行传入的文件夹;2、filename设置为[256][256],如果文件比较多,程序会崩溃的;
3、遍历子文件夹时,只保存了文件名,没有添加上级路径。
#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
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)