91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 8KB
    文件類型: .c
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-01
  • 語言: 其他
  • 標簽:

資源簡介

仿照unix操作系統中的find命令,實現自己的一個find命令。find命令從指定的目錄下開始,遞歸地查找指定文件。其命令格式如下: find PATH -option 參數 [-print] [-exec 命令 {} \;] PATH:查找的起始目錄。 -option 參數:用來控制搜索方式,具體如下(以下只列出最常用的): ??? -name "文件":指定要查找的文件名,可以有通配符?*等。 ??? -prune 目錄:指出搜索時不搜索該目錄。 ??? -mtime +n或-n:按時間搜索,+n:表示n天之前修改過的文件;-n:表示今天到n天前之間修改過的文件。 ??? -ctime +n或-n:也是按時間查找,+n:表示n天之前創建的文件;-n:表示今天到n天前之間創建的文件。 ??? -print:將搜索結果輸出到標準輸出。 可選的實驗1:實現-exe選項。 ??? -exec:對查找到的每一個結果實行指定的程序。格式如下: ??? -exec 程序名 提示:執行指定的程序可以創建一個進程執行

資源截圖

代碼片段和文件信息

#include/*?{{{?*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
/*?}}}?*/
//全局變量/*?{{{?*/
#define?TRUE?1
#define?FALSE?0
#define?MAX_RESULT?500//最多能存儲多少個查詢結果

int?nameToggle=FALSE;//是否開啟-name選項
int?pruneToggle=FALSE;//是否開啟-prune選項
int?mtimeToggle=FALSE;//是否開啟-mtime選項
int?ctimeToggle=FALSE;//是否開啟-ctime選項
int?printToggle=FALSE;//是否開啟-print選項
int?execToggle=FALSE;//是否開啟-exec選項

int?namePosition=0;//-name是第幾個參數
int?prunePosition=0;//-prune是第幾個參數
int?mtimePosition=0;//-mtime是第幾個參數
int?ctimePosition=0;//-ctime是第幾個參數
int?execPosition=0;//-exec是第幾個參數

char*?result[MAX_RESULT];//存儲查詢結果
int?resultPosition=0;//result數組下標
/*?}}}?*/
int?matchName(char*?stringchar*?pattern){/*?{{{?*/
regex_t?reg;//正則表達式
if(regcomp(®patternREG_NOSUB|REG_ICASE)!=0){
perror(“compile?regex?error“);
printf(“regex:%s\n“pattern);
exit(EXIT_FAILURE);
}
int?status=regexec(®string(size_t)0NULL0);
regfree(®);
if(status==0)
return?TRUE;
return?FALSE;
}/*?}}}?*/
int?matchMtime(struct?stat?stat_bufint?n){/*?{{{?*/
time_t?now=time(NULL);
time_t?mtime=stat_buf.st_mtime;
/*printf(“********************\n“);
printf(“test?mtime:\t%s\n“ctime(&mtime));
printf(“time?now:\t%s\n“ctime(&now));
printf(“difftime:\t%f\n“difftime(nowmtime));
printf(“day:\t%d\n“(int)difftime(nowmtime)/(60*60*24));
printf(“********************\n“);*/
int?day=(int)difftime(nowmtime)/(60*60*24);//上次修改距今天的天數
if(n<0){//搜索今天到n天前之間修改過的文件
if(day+n<0) return?TRUE;
}
else{//搜索n天之前修改過的文件
if(day>=n) return?TRUE;
}
return?FALSE;
}/*?}}}?*/
int?matchCtime(struct?stat?stat_bufint?n){/*?{{{?*/
time_t?now=time(NULL);
time_t?ctime_=stat_buf.st_ctime;
int?day=(int)difftime(nowctime_)/(60*60*24);//自文件創建到今天的天數
/*printf(“********************\n“);
printf(“test?ctime:\t%s\n“ctime(&ctime_));
printf(“time?now:\t%s\n“ctime(&now));
printf(“difftime:\t%f\n“difftime(nowctime_));
printf(“day:\t%d\n“(int)difftime(nowctime_)/(60*60*24));
printf(“********************\n“);*/
if(n<0){//今天到n天前之間創建的文件
if(day+n<0)?return?TRUE;
}
else{//n天前創建的文件
if(day>=n) return?TRUE;
}
return?FALSE;
}/*?}}}?*/
char*?getPath(char*?pathchar*?filename){/*?{{{?*///根據目錄名和目錄下的文件名獲取文件路徑
int?len1=strlen(path);
int?len2=strlen(filename);
char*?str=(char*)malloc(len1+len2+2);
str[0]=‘\0‘;
str=strcat(strpath);
if(path[len1-1]!=‘/‘) str=strcat(str“/“);
str=strcat(strfilename);
return?str;
}/*?}}}?*/
void?printHelp(){//輸出幫助信息/*?{{{?*/
printf(“用法:find?路徑?-選項?正則表達式\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對查

評論

共有 條評論

相關資源