다른 명령
- 상위 폴더 a에서 시작하여 하위 모든 폴더를 재귀적으로 탐색하면서 .xml 파일을 찾아, 해당 파일을 폴더1_폴더2_..._파일명.xml 형식으로 변경하는 파이썬 프로그램
import os def rename_xml_files_in_tree(root_dir): for dirpath, _, filenames in os.walk(root_dir): for filename in filenames: if filename.lower().endswith(".xml"): abs_path = os.path.join(dirpath, filename) # 상대 경로를 구해서 폴더명들과 파일명을 연결 rel_path = os.path.relpath(abs_path, root_dir) parts = rel_path.split(os.sep) # 파일명에서 확장자 분리 name_without_ext, ext = os.path.splitext(parts[-1]) # 새 파일명 만들기 (폴더와 파일 이름 모두 언더스코어로 연결) flat_name = "_".join(parts[:-1] + [name_without_ext]) + ext new_path = os.path.join(dirpath, flat_name) # 중복되지 않으면 이름 변경 if abs_path != new_path: os.rename(abs_path, new_path) print(f"Renamed:\n{abs_path} ->\n{new_path}\n") # 사용 예시 (상위 폴더 'a'를 기준으로 실행) rename_xml_files_in_tree("a")
⸻
예시:
폴더 구조가 다음과 같을 경우:
a/ ├── b/ │ └── c/ │ └── d/ │ └── t.xml
- 실행 후 결과는:
a/b/c/d/t.xml → a/b/c/d/a_b_c_d_t.xml
⸻
참고 사항: • os.walk()로 전체 하위 폴더를 탐색합니다. • os.path.relpath()로 a 폴더 기준 상대 경로를 구하고, 각 디렉토리 이름과 파일명을 _로 연결합니다. • 이름이 이미 변경된 상태이거나 중복된다면 변경하지 않습니다.