资源简介
仿照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
- 下一篇:简单代码解释器
相关资源
- 操作系统实验八 文件管理
- 操作系统实验五 内存管理
- 操作系统实验四 设备管理
- 操作系统实验一: 进程调度
- 操作系统实验-银行家算法
- 重大软院操作系统实验四:虚拟内存
- Linux操作系统试题附答案
- 操作系统实验——磁盘存储空间的分
- 《操作系统教程答案》北京出版社_陈
- 操作系统知识结构图
- 操作系统真象还原完整扫描版
- 操作系统线程同步实验报告
- 操作系统课设之页面置换
- 生产者消费者C 代码
- 操作系统课程设计-消费者生产者问
- 操作系统实验之内存管理
- μC/OS-II操作系统在STM32上的移植
- 页式存储器管理模拟程序设计
- Nucleus Plus for ARM
- 基于STM8定制轻量操作系统Aatomthreads官
- 操作系统复习资料张尧学版
- 操作系统——作业调度实验
- 操作系统存储管理页面置换算法(O
- 操作系统实验四 动态分区分配算法
- 操作系统实验五 虚拟内存页面置换算
- 操作系统实验二 时间片轮转RR进程调
- 多用户文件系统的实现
- 操作系统进程调度算法课程设计报告
- 可变式分区存储管理 实验报告和源代
- 操作系统.zip
评论
共有 条评论