当前位置: 技术问答>linux和unix
哪位大侠给个将一个目录下的所有文件名都由大写改成小写的shell或者c程序,121分呀!
来源: 互联网 发布时间:2014-10-22
本文导语: 如题! |这是我的c程序,在sco unix 5.0 下编译通过。 #include #include #include #include #include int ToUpper(char *); void main(int ac,char **av) { DIR *dp; struct dirent *dirptr; struct stat stbuf; char File...
如题!
|
这是我的c程序,在sco unix 5.0 下编译通过。 #include #include #include #include #include int ToUpper(char *); void main(int ac,char **av) { DIR *dp; struct dirent *dirptr; struct stat stbuf; char File_name[128]; char old_dir[1024][128]; int Cur_pos = -1; // 当前位置 int level = 0, levelnum[50], i; for( i = 0; i d_name, &stbuf ) == -1 ){ perror("stat"); exit(1); } if( strcmp( dirptr->d_name,"." ) != 0&& strcmp( dirptr->d_name, ".." ) != 0 ){ strcpy(File_name,dirptr->d_name); ToUpper(File_name); rename( dirptr->d_name,File_name ); printf("RENAME %s => %s OKn",dirptr->d_name,File_name); } /* 保存目录 */ if( ( stbuf.st_mode&S_IFMT ) != S_IFREG ) if( strcmp( dirptr->d_name,"." ) != 0&& strcmp( dirptr->d_name, ".." ) != 0 ){ strcpy( old_dir[++Cur_pos],File_name); levelnum[ level ] ++; } } closedir(dp); if( Cur_pos == -1 ) break; else { if( levelnum[ level ] == 0 ){ chdir(".."); if( levelnum[ --level ] == 0 ){ chdir(".."); level --; if ( level == -1 ) break; } } if( chdir(old_dir[Cur_pos]) != -1 ){ levelnum[ level ] --; level ++; Cur_pos --; dp = opendir("."); } else perror("opendir"); } } exit(0); } int ToUpper(char *str) { int i; for(i = 0; i