터미널을 열고 파이썬 스크립트를 실행하면 흩어진 파일들이 순식간에 정리돼요. 맥 사용자라면 기본 설치된 파이썬으로 바로 시작할 수 있어요.
확장자별로 파일 자동 분류하기
가장 기본적인 방법은 확장자를 기준으로 폴더를 만들어 정리하는 거예요. 다운로드 폴더에 쌓인 파일들을 정리할 때 특히 유용해요.
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을 활용할 수 있어요. 매주 일요일 밤에 다운로드 폴더를 자동 정리하도록 설정하면 항상 깔끔한 상태를 유지할 수 있어요.