'2025/11'에 해당되는 글 1건

  1. 2025.11.08 [AWK] 파일을 분류해서 A-Z 폴더로 이동하기
Tip/Windows2025. 11. 8. 00:21
# dir/b | utf | awk -f C:\WORK\UTIL\AWK\make_folder.awk -v HEAD=%1 | utf -kr > r.bat
# r.bat 

BEGIN {
    if (HEAD == "") {
        HEAD = "GBA_"
    }
    alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    for (i = 1; i <= length(alphabet); i++) {
        first = substr(alphabet, i, 1)
        folder[first] = 0
    } 
}
{
    if ($0 ~ /\.awk/) { 
        print "REM SKIP AWK FILE: " $0
        next 
    }

    if ($0 ~ /r\.bat/) { 
        print "REM SKIP TEMP BAT FILE: " $0
        next 
    }

    # 1. 파일명 전체를 변수에 저장
    file_name = $0;
    
    # 2. 파일명의 첫 글자를 추출하고 대문자로 변환
    # Windows 파일 시스템은 대소문자를 구분하지 않지만, 폴더명을 일관되게 대문자로 만듭니다.
    first_char = toupper(substr(file_name, 1, 1));

    # 3. 첫 글자가 영문 대문자(A-Z)인지 확인
    if (first_char ~ /^[A-Z]$/) {
        
        if (folder[first_char] == 0) {
           # 4. 대상 폴더 생성 명령 실행 (move 명령어 실행 전에 폴더가 없으면 오류 발생)
           print "mkdir " HEAD first_char;
        }
        folder[first_char]++
        
        # 5. 파일 이동 명령 실행
        # 파일명에 공백이 있을 수 있으므로 큰따옴표(\")로 감싸줍니다.
        # Windows의 move 명령어 구문을 사용합니다.
        print "move \"" file_name "\" " HEAD first_char "\\";
    } else {
        # 6. A-Z로 시작하지 않는 파일 처리
    }
}
END {
    for (i = 1; i <= length(alphabet); i++) {
        first = substr(alphabet, i, 1)
        if (folder[first] > 0) {
            print "REM " HEAD first " : "folder[first]
        }
    } 
}
Posted by chobocho