맥에서 파이썬으로 폴더 파일 자동 정리하는 방법

터미널을 열고 파이썬 스크립트를 실행하면 흩어진 파일들이 순식간에 정리돼요. 맥 사용자라면 기본 설치된 파이썬으로 바로 시작할 수 있어요.


손가락으로 정렬된 문서 아이콘 중 하나를 선택하는 모습


확장자별로 파일 자동 분류하기


가장 기본적인 방법은 확장자를 기준으로 폴더를 만들어 정리하는 거예요. 다운로드 폴더에 쌓인 파일들을 정리할 때 특히 유용해요.


import os
from shutil import move

# 정리할 폴더 경로
folder_path = '/Users/사용자명/Downloads'

# 폴더 내 모든 파일 목록 가져오기
files = os.listdir(folder_path)

# 확장자 추출 (대소문자 통일)
extensions = set()
for file in files:
    if os.path.isfile(os.path.join(folder_path, file)) and '.' in file:
        ext = file[file.rfind('.'):].upper()
        extensions.add(ext)

# 확장자별 폴더 만들기
for ext in extensions:
    os.makedirs(os.path.join(folder_path, ext), exist_ok=True)

# 파일을 해당 확장자 폴더로 이동
for file in files:
    file_path = os.path.join(folder_path, file)
    if os.path.isfile(file_path) and '.' in file:
        ext = file[file.rfind('.'):].upper()
        move(file_path, os.path.join(folder_path, ext, file))
        print(f"{file} → {ext} 폴더로 이동")


이 스크립트를 실행하면 PDF, JPG, TXT 같은 확장자명으로 폴더가 만들어지고 파일이 자동으로 이동해요.


파일명 패턴으로 분류하기


프로젝트 파일이나 업무 문서는 보통 일정한 규칙을 가지고 있어요. 예를 들어 '프로젝트명_날짜_버전.pdf' 같은 형식이죠.


import os
from shutil import move

# 맥 데스크탑 경로
folder_path = '/Users/사용자명/Desktop'

files = os.listdir(folder_path)

# 언더바 앞부분을 카테고리로 사용
categories = set()
for file in files:
    if os.path.isfile(os.path.join(folder_path, file)) and '_' in file:
        category = file.split('_')[0]
        categories.add(category)

# 카테고리별 폴더 생성
for cat in categories:
    os.makedirs(os.path.join(folder_path, cat), exist_ok=True)

# 파일 이동
for file in files:
    file_path = os.path.join(folder_path, file)
    if os.path.isfile(file_path) and '_' in file:
        category = file.split('_')[0]
        move(file_path, os.path.join(folder_path, category, file))
        print(f"{file} → {category} 폴더로 이동")


파일명에서 언더바 앞부분을 추출해서 카테고리로 사용하는 방식이에요. 프로젝트별로 파일을 정리할 때 매우 편리해요.


날짜별로 파일 정리하기


사진이나 동영상 파일은 날짜별로 정리하면 나중에 찾기 쉬워요. 파일명에 날짜가 포함된 경우를 처리하는 예제예요.


import os
import shutil
import re

# 사진 폴더 경로
folder_path = '/Users/사용자명/Pictures'

files = os.listdir(folder_path)

for file in files:
    file_path = os.path.join(folder_path, file)
    
    # 파일인지 확인
    if not os.path.isfile(file_path):
        continue
    
    # 날짜 패턴 찾기 (YYYY-MM-DD 형식)
    date_pattern = re.search(r'(\d{4})-(\d{2})-(\d{2})', file)
    if date_pattern:
        year = date_pattern.group(1)
        month = date_pattern.group(2)
        
        # 연도/월 폴더 생성
        year_folder = os.path.join(folder_path, year)
        month_folder = os.path.join(year_folder, month)
        
        os.makedirs(month_folder, exist_ok=True)
        
        # 파일 이동
        shutil.move(file_path, os.path.join(month_folder, file))
        print(f"{file} → {year}/{month} 폴더로 이동")


이 스크립트는 파일명에서 날짜를 찾아 연도와 월별로 폴더를 만들어 정리해요. 스크린샷이나 사진 정리에 아주 유용해요.


파일 크기별로 분류하기


대용량 파일과 소용량 파일을 분리해서 관리하고 싶을 때 사용하는 방법이에요.


import os
import shutil

folder_path = '/Users/사용자명/Downloads'

# 크기별 폴더명
size_folders = {
    'small': (0, 1024 * 1024),        # 1MB 미만
    'medium': (1024 * 1024, 100 * 1024 * 1024),  # 1MB ~ 100MB
    'large': (100 * 1024 * 1024, float('inf'))   # 100MB 이상
}

# 폴더 생성
for folder in size_folders:
    os.makedirs(os.path.join(folder_path, folder), exist_ok=True)

# 파일 분류
files = os.listdir(folder_path)
for file in files:
    file_path = os.path.join(folder_path, file)
    
    if os.path.isfile(file_path):
        file_size = os.path.getsize(file_path)
        
        # 크기에 맞는 폴더 찾기
        for folder, (min_size, max_size) in size_folders.items():
            if min_size <= file_size < max_size:
                target_path = os.path.join(folder_path, folder, file)
                shutil.move(file_path, target_path)
                print(f"{file} → {folder} 폴더로 이동")
                break


복잡한 파일명 패턴 처리하기


정규식을 활용하면 더 복잡한 파일명 패턴도 처리할 수 있어요. 버전 번호가 있는 파일을 정리하는 예제예요.


import os
import re
import shutil

folder_path = '/Users/사용자명/Documents'

files = os.listdir(folder_path)

for file in files:
    file_path = os.path.join(folder_path, file)
    
    if not os.path.isfile(file_path):
        continue
    
    # 버전 번호 패턴 찾기 (v1, v2.0, ver3 등)
    version_match = re.search(r'[vV](?:er)?(\d+(?:\.\d+)?)', file)
    
    if version_match:
        version = version_match.group(1)
        version_folder = os.path.join(folder_path, f'version_{version}')
        
        os.makedirs(version_folder, exist_ok=True)
        shutil.move(file_path, os.path.join(version_folder, file))
        print(f"{file} → version_{version} 폴더로 이동")


맥에서 스크립트 실행하기


터미널을 열고 다음 명령어를 입력하면 돼요.


# 스크립트 저장 (예: file_organizer.py)
cd ~/Desktop
nano file_organizer.py

# 스크립트 실행
python3 file_organizer.py

자주 사용한다면 실행 권한을 주고 더블클릭으로 실행할 수도 있어요.

# 실행 권한 부여
chmod +x file_organizer.py

# 첫 줄에 shebang 추가
#!/usr/bin/env python3


안전하게 사용하기 위한 팁


실수로 중요한 파일을 잘못 이동하는 것을 방지하려면 복사 후 확인하는 방식을 사용하세요.


import os
import shutil

def safe_organize(folder_path):
    # 백업 폴더 생성
    backup_folder = os.path.join(folder_path, '_backup')
    os.makedirs(backup_folder, exist_ok=True)
    
    files = os.listdir(folder_path)
    
    for file in files:
        file_path = os.path.join(folder_path, file)
        
        if os.path.isfile(file_path) and file != '.DS_Store':
            # 복사 먼저 실행
            backup_path = os.path.join(backup_folder, file)
            shutil.copy2(file_path, backup_path)
            print(f"{file} 백업 완료")

# 사용 예
safe_organize('/Users/사용자명/Desktop')


맥의 숨김 파일인 .DS_Store는 제외하도록 처리했어요.


정기적으로 실행하고 싶다면 맥의 자동화 앱이나 cron을 활용할 수 있어요. 매주 일요일 밤에 다운로드 폴더를 자동 정리하도록 설정하면 항상 깔끔한 상태를 유지할 수 있어요.


파이썬으로 엑셀 파일 여러 개 자동으로 합치는 방법