본문 바로가기

IT/프로그래밍

[DOS/UNIX] 디렉토리 내의 파일 한번에 이름 바꾸기

728x90

원글(이글루): 2009-12-29 20:35:35

예전 파일명 한번에 바꾸기 귀찮아서 작성한 짜잘한 코드, 몇 년전 보니까 편리하게 nzrename이란게 있더군.

#include <stddef.h>
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
/*
[동키고고][애니]Dragon.Ball.088.smi
to
[애니]Dragon Ball 088.smi
*/
void tolower_chars(char *x)
{
        int i;
        for (i=0;i<strlen(x) ;i++ )
        {
                x[i]=tolower(x[i]);
        }
}
int main (void)
{
        DIR *dp;
        struct dirent *ep; /* 현재의 디렉토리를 개방해서 dp에 넣어라!!! */
        char input[20];
        char targetname[36];
        char *ptarget;
        printf("Example\n");
        printf("[동키고고][애니]Dragon.Ball.088.smi\n"
                        "to\n"
                        "[애니]Dragon Ball 088.smi\n");
        printf("동의 합니까 ? [YES(Y)/NO(ELSE)]");
        gets(input);
        tolower_chars(input);
        if (strcmp(input,"yes") && strcmp(input,"y"))
        {
                printf("진행 하지 않고 종료합니다.\n");
                return;
        }
        dp = opendir (".");
        /* 만일 개방이 됐다면 dp의 엔트리를 읽어서 ep에 넣고 그 구조체에서 d_name멤버를 출력하라. */
        if (dp != NULL) {
                while (ep = readdir (dp)) {
                        if (strlen(ep->d_name)==35)
                        {
                                if (strstr(ep->d_name,"[동키고고]") != NULL)
                                {
                                        printf("LEN = %3d ",strlen(ep->d_name));
                                        strcpy(targetname,ep->d_name);
                                        ptarget=&targetname[10];
                                        puts (ep->d_name);
                                        puts (targetname);
                                        puts (ptarget);
                                        ptarget[12]=' ';
                                        ptarget[13]='B';
                                        ptarget[17]=' ';
                                        puts (ptarget);
                                        rename(ep->d_name,ptarget);
                                }
                        };
                }
                (void) closedir (dp);
        }
        /* 개방이 안됐다면 에러 메시지 출력. . . */
        else
        puts ("Couldn't open the directory. ");
        return 0;
}

728x90

'IT > 프로그래밍' 카테고리의 다른 글

[Linux] 공유 라이브러리 생성  (0) 2023.09.13
[Linux] 정적 라이브러리 생성  (0) 2023.09.13
[함수] getopt, getopt_long  (0) 2023.09.13
[make] Makefile 생성법  (0) 2023.09.13
[html] Java Script를 이용한 Redirect  (0) 2023.09.13