차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 폰트_이름으로_파일명_변경 [2026/01/03 06:59] – 만듦 koov | 폰트_이름으로_파일명_변경 [알 수 없는 날짜] (현재) – 바깥 편집 (알 수 없는 날짜) 127.0.0.1 | ||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| + | ====== 폰트 이름으로 파일명 변경 ====== | ||
| + | --- // | ||
| + | |||
| + | 폰트파일의 정보를 읽어서 해당 정보를 기반으로 파일명을 변경해주는 스크립트 | ||
| + | |||
| + | 아래 스크립트가 동작하기 위해서는 '' | ||
| + | '' | ||
| + | |||
| + | <WRAP prewrap> | ||
| + | <code bash> | ||
| + | #!/bin/bash | ||
| + | |||
| + | # 로케일 설정 (한글 및 유니코드 바이트 계산 필수) | ||
| + | export LC_ALL=C.UTF-8 | ||
| + | export LANG=C.UTF-8 | ||
| + | |||
| + | # 설정: 폰트 디렉토리 (필요시 수정) | ||
| + | FONTDIR=" | ||
| + | |||
| + | # 색상 출력 정의 | ||
| + | RED=' | ||
| + | GREEN=' | ||
| + | YELLOW=' | ||
| + | BLUE=' | ||
| + | PURPLE=' | ||
| + | BOLD=' | ||
| + | NC=' | ||
| + | |||
| + | # === 도움말 출력 함수 === | ||
| + | function show_help() { | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo "" | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo "" | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo "" | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo "" | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | } | ||
| + | |||
| + | # === 인자값 처리 === | ||
| + | if [[ -z " | ||
| + | show_help | ||
| + | exit 0 | ||
| + | fi | ||
| + | |||
| + | case " | ||
| + | " | ||
| + | MODE=" | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | ;; | ||
| + | " | ||
| + | MODE=" | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | ;; | ||
| + | " | ||
| + | show_help | ||
| + | exit 0 | ||
| + | ;; | ||
| + | *) | ||
| + | echo -e " | ||
| + | show_help | ||
| + | exit 1 | ||
| + | ;; | ||
| + | esac | ||
| + | |||
| + | # 폰트 파일 검색 | ||
| + | font_files=$(find " | ||
| + | |||
| + | if [ -z " | ||
| + | echo -e " | ||
| + | exit 0 | ||
| + | fi | ||
| + | |||
| + | processed=0 | ||
| + | renamed=0 | ||
| + | |||
| + | IFS=$' | ||
| + | for original_filepath in $font_files; | ||
| + | ((processed++)) | ||
| + | echo " | ||
| + | echo -e " | ||
| + | |||
| + | # 1. fc-scan 정보 추출 | ||
| + | fullname_string=$(fc-scan -f " | ||
| + | echo -e " | ||
| + | |||
| + | if [ -z " | ||
| + | echo -e " | ||
| + | continue | ||
| + | fi | ||
| + | |||
| + | # 2. 토큰 분리 및 한글 우선 선택 | ||
| + | IFS=',' | ||
| + | selected_name="" | ||
| + | first_token="" | ||
| + | |||
| + | for i in " | ||
| + | token=" | ||
| + | token=$(echo " | ||
| + | [ -z " | ||
| + | [ -z " | ||
| + | |||
| + | if echo " | ||
| + | [ -z " | ||
| + | echo -e " | ||
| + | else | ||
| + | echo -e " | ||
| + | fi | ||
| + | done | ||
| + | |||
| + | # 3. 이름 정제 | ||
| + | new_name_base=" | ||
| + | sanitized=$(echo " | ||
| + | |||
| + | # 4. 32바이트 초과 처리 및 VF 중복 방지 | ||
| + | byte_size=$(printf " | ||
| + | if [ " | ||
| + | first_word=" | ||
| + | sanitized_short=$(echo " | ||
| + | | ||
| + | if [[ " | ||
| + | sanitized=" | ||
| + | echo -e " | ||
| + | else | ||
| + | sanitized=" | ||
| + | echo -e " | ||
| + | fi | ||
| + | fi | ||
| + | |||
| + | if [ -z " | ||
| + | |||
| + | # 5. 경로 및 중복 확인 | ||
| + | dir_path=$(dirname " | ||
| + | extension=" | ||
| + | final_new_filepath=" | ||
| + | |||
| + | counter=1 | ||
| + | while [ -e " | ||
| + | final_new_filepath=" | ||
| + | ((counter++)) | ||
| + | done | ||
| + | |||
| + | # 6. 실행 | ||
| + | if [ " | ||
| + | echo " | ||
| + | else | ||
| + | echo -e " | ||
| + | echo " | ||
| + | echo " | ||
| + | if [[ " | ||
| + | mv " | ||
| + | echo -e " | ||
| + | fi | ||
| + | ((renamed++)) | ||
| + | fi | ||
| + | done | ||
| + | |||
| + | echo " | ||
| + | echo -e " | ||
| + | |||
| + | if [[ " | ||
| + | echo "" | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | fi | ||
| + | </ | ||
| + | </ | ||