资源简介
仿照unix操作系统中的find命令,在实现一个myfind命令。myfind命令从指定的目录下开始,递归地查找指定文件。其命令格式如下:
myfind PATH -option 参数 [-print] [-exec 命令 {} \;]
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define TRUE 1
#define FALSE 0
#define MAX_SIZE 100
int nameSwitch =FALSE;//-name命令的开关
int pruneSwitch=FALSE;//-prune命令的开关
int mtimeSwitch=FALSE;//-mtime命令的开关
int ctimeSwitch=FALSE;//-ctime命令的开关
int printSwitch=FALSE;//-print命令的开关
int execSwitch =FALSE;//-exec命令的开关
char *nameParam;//-name命令的参数
char *pruneParam;//-prune命令的参数
char *mtimeParam;//-mtime命令的参数
char *ctimeParam;//-ctime命令的参数
char *execParam[MAX_SIZE];//-exec命令的参数
int execParamIndex;//-exec命令的参数的个数
char result[MAX_SIZE][MAX_SIZE];
int resultIndex=0;
//帮助提示
void printHelp()
{
printf(“-help \n“);
printf(“用法:myfind 路径 -选项 参数\n“);
printf(“选项说明:\n“);
printf(“-name \“文件\“\n\t指定要查找的文件名\n“);
printf(“-prune 目录\n\t指出搜索时不搜索该目录\n“);
printf(“-mtime +n或-n\n\t按修改时间查找\n“);
printf(“\t+n表示n天之前修改过的文件\n“);
printf(“\t-n表示n今天到n天之前修改过的文件\n“);
printf(“-ctime +n或-n\n\t按创建时间查找\n“);
printf(“\t+n表示n天之前创建的文件\n“);
printf(“\t-n表示今天到n天前之间创建的文件\n“);
printf(“-print\n\t将搜索结果输出到标准输出\n“);
printf(“-exec 命令 [参数] \\;\n\t对查找到的结果执行指定的命令(注意要输入\\;作为结束)\n“);
}
//命令解析
void interpreter(int argcchar *argv[])
{
int iflag=1;
for(i=2;i {
if(strcmp(argv[i]“-name“)==0)
{
nameSwitch=TRUE;
nameParam=argv[++i];
// printf(“nameParam=%s\n“nameParam);
}
else if(strcmp(argv[i]“-prune“)==0)
{
pruneSwitch=TRUE;
pruneParam=argv[++i];
// printf(“pruneParam=%s\n“pruneParam);
}
else if(strcmp(argv[i]“-mtime“)==0)
{
mtimeSwitch=TRUE;
mtimeParam=argv[++i];
// printf(“mtimeParam=%s\n“mtimeParam);
}
else if(strcmp(argv[i]“-ctime“)==0)
{
ctimeSwitch=TRUE;
ctimeParam=argv[++i];
// printf(“ctimeParam=%s\n“ctimeParam);
}
else if(strcmp(argv[i]“-print“)==0)
{
printSwitch=TRUE;
}
else if(strcmp(argv[i]“-exec“)==0)
{
int j=0;
execSwitch=TRUE;
while(strcmp(argv[i]“;“)!=0)
{
execParam[j++]=argv[++i];
}
execParamIndex=j;
// int k;
// for(k=0;k // printf(“execParam=%s\n“execParam[k]);
}
else flag=0;
}
if(!flag)
{
printHelp();
exit(EXIT_FAILURE);
}
}
//扫描文件
int browse_folder(char * pathName)
{
DIR *pdir;
struct dirent*pentry;//目录结构体
char temp[256];
char path[256];
pdir =opendir(pathName);
if(pdir==NULL)
{
perror(“opendir“);
return 0;
}
while((pentry=readdir(pdir))!=NULL)
{
if(strcmp(pentry->d_name“.“)==0||strcmp(pentry->d_name“..“)==0)
continue;
strcpy(temppathName);
sprintf(path“%s/%s“temppentry->d_name);
//
- 上一篇:DotNetARX6.0.rar
- 下一篇:简单代码解释器
相关资源
- 升腾Win终端系统升级方法新版.doc
- Uninstall_Cortana_WINCLIENT.CN.rar
- 在大图中查找小图显示位置
- STM32基于rt_thread操作系统的SDHC卡文件
- 操作系统 LRU算法 实验报告 及 程序代
- [免费]车载CE6.0操作系统
- 分页系统模拟实验 操作系统 课程设
- 模拟段页式虚拟存储管理中地址转换
- 操作系统实验——虚存管理实验
- 广工操作系统实验
- 广东工业大学操作系统实验四文件系
- Bochs入门教程[操作系统第一步]
- 操作系统课程设计完整版
- 磁盘调度算法的模拟实现及对比
- 文学研究助手(字符串的查找模式匹
- 模拟一个文件管理系统
- 二级文件系统(操作系统)
- uCOS编译环境建立 BC45 TASM
- Linux 操作系统实验(全)
- 操作系统实验综合设计【附代码】
- 操作系统共享内存实验
- 操作系统循环首次适应算法
- 操作系统课程设计实现可变分区存储
- 基于GTK的Linux环境下的简易任务管理器
- 操作系统课程设计 二级文件管理系统
- 加快Windows XP操作系统开机速度
- 操作系统教程课后答案华中科技大学
- 51单片机中使用ucos ii的优缺点转
- 51单片机中使用ucos ii的优缺点
- 嵌入式实时操作系统ucos-II 第二版 源
评论
共有 条评论