HTML Date 참조 디렉토리명 변경 파이썬 스크립트
1. 필요 라이브러리 설치
$ pip show beautifulsoup4 // 파이썬 BeautifulSoup4 라이브러리 설치확인
WARNING: Package(s) not found: beautifulsoup4
$ pip install beautifulsoup4 // 파이썬 BeautifulSoup4 라이브러리 설치
Defaulting to user installation because normal site-packages is not writeable
Collecting beautifulsoup4
Downloading beautifulsoup4-4.14.2-py3-none-any.whl.metadata (3.8 kB)
Collecting soupsieve>1.2 (from beautifulsoup4)
Downloading soupsieve-2.8-py3-none-any.whl.metadata (4.6 kB)
Collecting typing-extensions>=4.0.0 (from beautifulsoup4)
Downloading typing_extensions-4.15.0-py3-none-any.whl.metadata (3.3 kB)
Downloading beautifulsoup4-4.14.2-py3-none-any.whl (106 kB)
Downloading soupsieve-2.8-py3-none-any.whl (36 kB)
Downloading typing_extensions-4.15.0-py3-none-any.whl (44 kB)
Installing collected packages: typing-extensions, soupsieve, beautifulsoup4
Successfully installed beautifulsoup4-4.14.2 soupsieve-2.8 typing-extensions-4.15.0
2. 스트립트 내용
import os
import re
from bs4 import BeautifulSoup
# 기준 루트 디렉토리
root_dir = r"D:\dev\www\content\_working"
def extract_date_from_html(html_path):
"""HTML 파일에서 date 정보를 추출"""
try:
with open(html_path, "r", encoding="utf-8") as f:
soup = BeautifulSoup(f, "html.parser")
# <meta name="date" content="2025-08-22"> 같은 경우
meta_date = soup.find("meta", attrs={"name": "date"})
if meta_date and meta_date.get("content"):
return meta_date["content"].strip()
# <time datetime="2025-08-22"> 같은 경우
time_tag = soup.find("time")
if time_tag and time_tag.get("datetime"):
return time_tag["datetime"].strip()
# 패턴 매칭 (본문에 YYYY-MM-DD 형태가 있을 경우)
text = soup.get_text()
match = re.search(r"\d{4}-\d{2}-\d{2}", text)
if match:
return match.group(0)
except Exception as e:
print(f"Error reading {html_path}: {e}")
return None
for folder in os.listdir(root_dir):
old_path = os.path.join(root_dir, folder)
if os.path.isdir(old_path):
# 디렉토리 안의 첫 번째 html 파일 찾기
html_files = [f for f in os.listdir(old_path) if f.endswith(".html")]
if html_files:
html_path = os.path.join(old_path, html_files[0])
date_str = extract_date_from_html(html_path)
if date_str:
new_name = date_str
new_path = os.path.join(root_dir, new_name)
if old_path != new_path:
print(f"Renaming: {old_path} -> {new_path}")
os.rename(old_path, new_path)
3. 스크립트 실행
$ python rename-folders.py --dry-run // --dry-run는 테스트를 위해 미리실행
10 2024-08-25 ꯰ Ϸ
101 2025-07-07 ꯰ Ϸ
103 2025-07-07-1 ꯰ Ϸ
104 2025-07-07-2 ꯰ Ϸ
105 2025-07-07-3 ꯰ Ϸ
107 2025-07-07-4 ꯰ Ϸ
108 2025-07-07-5 ꯰ Ϸ
109 2025-07-07-6 ꯰ Ϸ
11 2024-08-25-1 ꯰ Ϸ
110 2025-07-07-7 ꯰ Ϸ
111 2025-07-07-8 ꯰ Ϸ
112 2025-07-07-9 ꯰ Ϸ
113 2025-07-07-10 ꯰ Ϸ
114 2025-07-07-11 ꯰ Ϸ
115 2025-07-07-12 ꯰ Ϸ
116 2025-07-07-13 ꯰ Ϸ
119 2025-07-07-14 ꯰ Ϸ
12 2024-08-25-2 ꯰ Ϸ
120 2025-07-08 ꯰ Ϸ
121 2025-07-08-1 ꯰ Ϸ
122 2025-07-08-2 ꯰ Ϸ
124 2025-07-09 ꯰ Ϸ
125 2025-07-09-1 ꯰ Ϸ
126 2025-07-09-2 ꯰ Ϸ
128 2025-07-11 ꯰ Ϸ
13 2024-08-25-3 ꯰ Ϸ
130 2025-07-11-1 ꯰ Ϸ
131 2025-07-12 ꯰ Ϸ
133 2025-07-15 ꯰ Ϸ
134 2025-07-15-1 ꯰ Ϸ
137 2025-07-16 ꯰ Ϸ
138 2025-07-17 ꯰ Ϸ
139 2025-07-18 ꯰ Ϸ
14 2024-08-26 ꯰ Ϸ
140 2025-07-20 ꯰ Ϸ
141 2025-07-21 ꯰ Ϸ
142 2025-07-21-1 ꯰ Ϸ
143 2025-07-23 ꯰ Ϸ
144 2025-07-23-1 ꯰ Ϸ
145 2025-07-24 ꯰ Ϸ
146 2025-07-25 ꯰ Ϸ
147 2025-07-26 ꯰ Ϸ
148 2025-07-27 ꯰ Ϸ
149 2025-07-28 ꯰ Ϸ
150 2025-07-29 ꯰ Ϸ
151 2025-07-30 ꯰ Ϸ
152 2025-07-31 ꯰ Ϸ
153 2025-07-31-1 ꯰ Ϸ
154 2025-08-01 ꯰ Ϸ
155 2025-08-04 ꯰ Ϸ
156 2025-08-04-1 ꯰ Ϸ
157 2025-08-05 ꯰ Ϸ
158 2025-08-05-1 ꯰ Ϸ
159 2025-08-06 ꯰ Ϸ
16 2024-08-26-1 ꯰ Ϸ
160 2025-08-07 ꯰ Ϸ
161 2025-08-08 ꯰ Ϸ
162 2025-08-09 ꯰ Ϸ
163 2025-08-10 ꯰ Ϸ
164 2025-08-11 ꯰ Ϸ
165 2025-08-13 ꯰ Ϸ
166 2025-08-13-1 ꯰ Ϸ
167 2025-08-14 ꯰ Ϸ
168 2025-08-15 ꯰ Ϸ
169 2025-08-16 ꯰ Ϸ
17 2024-08-26-2 ꯰ Ϸ
170 2025-08-16-1 ꯰ Ϸ
171 2025-08-17 ꯰ Ϸ
172 2025-08-18 ꯰ Ϸ
173 2025-08-19 ꯰ Ϸ
174 2025-08-20 ꯰ Ϸ
175 2025-08-20-1 ꯰ Ϸ
176 2025-08-21 ꯰ Ϸ
177 2025-08-21-1 ꯰ Ϸ
178 2025-08-22 ꯰ Ϸ
179 2025-08-27 ꯰ Ϸ
18 2024-08-28 ꯰ Ϸ
180 2025-08-27-1 ꯰ Ϸ
181 2025-08-27-2 ꯰ Ϸ
182 2025-08-27-3 ꯰ Ϸ
183 2025-08-27-4 ꯰ Ϸ
184 2025-08-28 ꯰ Ϸ
185 2025-08-29 ꯰ Ϸ
186 2025-09-01 ꯰ Ϸ
187 2025-09-02 ꯰ Ϸ
188 2025-09-03 ꯰ Ϸ
189 2025-09-03-1 ꯰ Ϸ
19 2024-08-29 ꯰ Ϸ
190 2025-09-03-2 ꯰ Ϸ
191 2025-09-03-3 ꯰ Ϸ
192 2025-09-04 ꯰ Ϸ
193 2025-09-04-1 ꯰ Ϸ
194 2025-09-09 ꯰ Ϸ
20 2024-09-03 ꯰ Ϸ
21 2024-09-18 ꯰ Ϸ
22 2024-09-18-1 ꯰ Ϸ
23 2024-09-18-2 ꯰ Ϸ
24 2024-09-18-3 ꯰ Ϸ
25 2024-09-18-4 ꯰ Ϸ
26 2024-09-18-5 ꯰ Ϸ
27 2024-09-18-6 ꯰ Ϸ
28 2024-09-18-7 ꯰ Ϸ
29 2024-09-18-8 ꯰ Ϸ
3 2024-08-07 ꯰ Ϸ
30 2024-09-18-9 ꯰ Ϸ
31 2024-09-18-10 ꯰ Ϸ
32 2024-09-18-11 ꯰ Ϸ
33 2024-09-18-12 ꯰ Ϸ
34 2024-09-18-13 ꯰ Ϸ
35 2024-09-18-14 ꯰ Ϸ
36 2024-09-18-15 ꯰ Ϸ
37 2024-09-18-16 ꯰ Ϸ
38 2024-09-18-17 ꯰ Ϸ
39 2024-09-18-18 ꯰ Ϸ
4 2024-08-07-1 ꯰ Ϸ
40 2024-09-18-19 ꯰ Ϸ
41 2024-09-18-20 ꯰ Ϸ
42 2024-09-18-21 ꯰ Ϸ
44 2024-09-18-22 ꯰ Ϸ
45 2024-09-18-23 ꯰ Ϸ
46 2024-09-18-24 ꯰ Ϸ
47 2025-02-03 ꯰ Ϸ
49 2025-02-17 ꯰ Ϸ
5 2024-08-12 ꯰ Ϸ
50 2025-02-17-1 ꯰ Ϸ
51 2025-02-17-2 ꯰ Ϸ
52 2025-02-17-3 ꯰ Ϸ
53 2025-02-17-4 ꯰ Ϸ
54 2025-02-17-5 ꯰ Ϸ
55 2025-02-17-6 ꯰ Ϸ
56 2025-02-17-7 ꯰ Ϸ
57 2025-02-18 ꯰ Ϸ
58 2025-02-19 ꯰ Ϸ
59 2025-05-25 ꯰ Ϸ
6 2024-08-12-1 ꯰ Ϸ
61 2025-06-02 ꯰ Ϸ
62 2025-06-24 ꯰ Ϸ
63 2025-06-24-1 ꯰ Ϸ
64 2025-06-24-2 ꯰ Ϸ
65 2025-06-24-3 ꯰ Ϸ
66 2025-06-24-4 ꯰ Ϸ
67 2025-06-24-5 ꯰ Ϸ
7 2024-08-12-2 ꯰ Ϸ
73 2025-07-04 ꯰ Ϸ
74 2025-07-04-1 ꯰ Ϸ
75 2025-07-04-2 ꯰ Ϸ
76 2025-07-04-3 ꯰ Ϸ
77 2025-07-04-4 ꯰ Ϸ
78 2025-07-04-5 ꯰ Ϸ
79 2025-07-04-6 ꯰ Ϸ
8 2024-08-13 ꯰ Ϸ
80 2025-07-04-7 ꯰ Ϸ
81 2025-07-04-8 ꯰ Ϸ
82 2025-07-04-9 ꯰ Ϸ
83 2025-07-04-10 ꯰ Ϸ
85 2025-07-06 ꯰ Ϸ
86 2025-07-06-1 ꯰ Ϸ
87 2025-07-06-2 ꯰ Ϸ
89 2025-07-06-3 ꯰ Ϸ
9 2024-08-16 ꯰ Ϸ
90 2025-07-06-4 ꯰ Ϸ
95 2025-07-06-5 ꯰ Ϸ
98 2025-07-06-6 ꯰ Ϸ
99 2025-07-06-7 ꯰ Ϸ
【참고자료】