search 工具设计时我想有下面的功能:
1、基本功能:可以打开指定目录下的所有文件,按行搜索输入的关键字
2、支持子目录搜索
3、支持大小写不敏感搜索
但我目前只实现了第一个功能,但立刻派上用场帮了我大忙,后来的两个功能觉得没有太大的必要性,自己写自己用的工具能用就行,这是我的观点。这是我在 UNIX 下第一次自己写工具,觉得自己写一些工具真的是一个在计算机界混的人所应具备的基本技能!我把这个工具的源码放上来,希望对初学者有一点参考价值,也希望有人能完成后两个功能,或是扩充更多的功能,别忘了通知我一声呀!请下载。这个文件在 SCO OpenServer 5 下用 cc 编译通过,在别的系统上改改头文件就能通过。
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
#include <stdio.h>
#include <string.h>
int cou_f=0,cou_s=0,cou_t=0;
int x = 0;
int r = 0;
int c = 0;
char file_r[255] = "result";
char dirname[255] = ".";
char keyword[255] = "";
main(argc,argv)
int argc;
char **argv;
{
int i;
FILE *fp;
char buf[256];
void search();
printf("Press 'search -h' to get help.\n");
for (i=1; i<argc; i++)
{
if (strcmp(argv[i],"-x")==0) x = 1;
else if (strcmp(argv[i],"-r")==0) r = 1;
else if (strcmp(argv[i],"-c")==0) c = 1;
else if (strcmp(argv[i],"-o")==0) strcpy(file_r,argv[++i]);
else if (strcmp(argv[i],"-d")==0) strcpy(dirname,argv[++i]);
else if (strcmp(argv[i],"-k")==0) strcpy(keyword,argv[++i]);
else if (strcmp(argv[i],"-h")==0)
{
printf("\n Tool for search keyword in files for SCO OpenServer\n");
printf(" Author: Daibo, 2000/3/29 \n");
printf("\n Usage: search -x -r -c -o ... -d ... -h \n");
printf(" -x open executive files.\n");
printf(" -r open child directory.\n");
printf(" -c Lower an Upper case sencitive.\n");
printf(" -o filename The output file,default is 'Result'.\n");
printf(" -d pathname The path,default is the current path.\n");
printf(" -k keyword The keyword you want to search.\n");
printf(" -h get help.\n");
}
}
if ( strlen( keyword ) < 1 )
{
printf("You must input the keyword.\n");
exit(1);
}
if ((fp = fopen(file_r,"w"))==NULL)
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 工具 printf if file %s argv keyword char file_r search |
注册
个人空间
