113 lines
6.5 KiB
Python
113 lines
6.5 KiB
Python
|
|
import os
|
|
import shutil
|
|
|
|
def copy_target_files_with_structure():
|
|
# 소스 디렉토리와 대상 디렉토리 설정
|
|
root_source_dir = '/home/jackjack/test/ocr_macro/ocr_data'
|
|
dest_dir = '/home/jackjack/test/ocr_macro/filtered_data'
|
|
|
|
# 복사할 파일 목록
|
|
files_to_copy = [
|
|
"20250701101504-789-402-926.jpg", "20250707164925-895-935-673.jpg",
|
|
"20250708092450-131-769-592.jpg", "20250708124502-268-927-842.jpg",
|
|
"20250709105123-169-457-765.jpg", "20250714150847-882-936-950.jpg",
|
|
"20250721090407-508-883-473.jpg", "20250724145851-721-283-914.jpg",
|
|
"20250729105852-697-150-153.jpg", "20250730180509-798-917-821.jpg",
|
|
"20170619133715-134-321-633.jpg", "20171017141811-255-321-370.jpg",
|
|
"20180103094436-462-212-348.jpg", "20180131103459-868-481-465.jpg",
|
|
"20180411134455-600-132-301.jpg", "20180412092830-356-712-939.jpg",
|
|
"20180807102155-126-746-229.jpg", "20190507165642-222-795-363.jpg",
|
|
"20191227103340-434-827-409.jpg", "20200113103330-999-251-437.png",
|
|
"20200313140454-282-318-706.jpg", "20201203162517-973-818-382.jpg",
|
|
"20250305150305-354-816-193.jpg", "2018-0319102207-217049.pdf",
|
|
"2018-0319114254-217049.pdf", "2021-0713114710-219044.pdf",
|
|
"2021-0713114843-219044.pdf", "2024-1129132456-223033.pdf",
|
|
"2024-1202134504-223033.pdf", "2024-1202134828-223033.pdf",
|
|
"2024-1216141625-211046.pdf", "2024-1231131430-223033.pdf",
|
|
"2025-0102114806-223033.pdf", "2025-0102115602-223033.pdf",
|
|
"20250715092937-779-181-466.jpg", "20250715110944-951-537-524.jpg",
|
|
"20250715111622-358-588-698.jpg", "20250715112411-186-289-669.jpg",
|
|
"20250715135137-801-844-961.jpg", "20250715161950-712-251-637.jpg",
|
|
"20250715162045-552-568-375.jpg", "20250715165509-176-474-591.jpg",
|
|
"20250715172557-573-573-629.jpg", "20250716093130-913-217-747.jpg",
|
|
"20250716105706-162-939-389.jpg", "20250716110134-808-994-942.jpg",
|
|
"20250716134023-322-796-383.jpg", "20250716163458-700-360-433.jpg",
|
|
"20250717093052-782-277-690.jpg", "20250717103222-584-701-241.jpg",
|
|
"20250717103712-214-193-157.jpg", "20250717110901-449-871-865.jpg",
|
|
"20250717155048-253-564-315.jpg", "20250717172043-664-630-683.jpg",
|
|
"20250718080610-968-626-824.jpg", "20250718093242-193-502-326.jpg",
|
|
"20250718105942-802-175-536.jpg", "20250718154510-618-961-614.jpg",
|
|
"20250718171201-832-262-559.jpg", "20250721103440-887-127-453.jpg",
|
|
"20250721103440-949-954-201.jpg", "20250721103556-832-150-503.jpg",
|
|
"20250721111443-531-701-811.jpg", "20250721111443-912-880-634.jpg",
|
|
"20250721112249-956-647-309.jpg", "20250721130808-958-549-703.jpg",
|
|
"20250721133831-152-461-423.jpg", "20250721145455-511-434-514.jpg",
|
|
"20250721145455-875-554-320.jpg", "20250721145456-782-822-874.jpg",
|
|
"20250721155757-121-923-232.jpg", "20250721160111-763-493-901.jpg",
|
|
"20250721160359-227-567-869.jpg", "20250721160359-337-126-571.jpg",
|
|
"20250721172118-534-854-174.jpg", "20250722083248-564-741-719.jpg",
|
|
"20250722101426-428-671-780.jpg", "20250722101619-869-994-366.jpg",
|
|
"20250722113040-790-828-516.jpg", "20250722113435-988-461-994.jpg",
|
|
"20250722132834-142-640-698.jpg", "20250722151220-665-449-414.jpg",
|
|
"20250722151447-194-809-212.jpg", "20250722151659-492-562-414.jpg",
|
|
"20250722155515-295-661-246.jpg", "20250722164044-771-951-768.jpg",
|
|
"20250723090127-752-277-978.jpg", "20250723103830-197-217-803.jpg",
|
|
"20250723110935-882-617-879.jpg", "20250723113848-341-499-399.jpg",
|
|
"20250723113849-860-361-766.jpg", "20250723135403-994-597-524.jpg",
|
|
"20250723135644-957-724-435.jpg", "20250723140727-539-276-326.jpg",
|
|
"20250723151024-958-230-632.jpg", "20250723160751-628-951-424.jpg",
|
|
"20250723160846-651-369-917.jpg", "20250723162424-328-470-393.jpg",
|
|
"20250724083131-482-629-632.jpg", "20250724084439-705-558-529.jpg",
|
|
"20250724085219-940-177-263.jpg", "20250724112248-515-638-257.jpg",
|
|
"20250724140126-814-266-218.jpg", "20250724165128-348-167-761.jpg",
|
|
"20250724170756-316-660-852.jpg", "20250725084748-172-127-509.jpg",
|
|
"20250725090550-647-253-595.jpg", "20250725103854-127-797-609.jpg",
|
|
"20250725112611-877-225-953.jpg", "20250725150958-785-430-943.jpg",
|
|
"20250725160005-618-961-614.jpg", "20250725160006-645-814-611.jpg",
|
|
"20250728110536-229-869-218.jpg", "20250728110536-422-535-360.jpg",
|
|
"20250728110536-848-126-746.jpg", "20250728133331-290-838-249.jpg",
|
|
"20250728133631-893-551-661.jpg", "20250728133731-800-849-608.jpg",
|
|
"20250728133919-745-435-884.jpg", "20250728141244-723-384-786.jpg",
|
|
"20250728163719-158-329-264.jpg", "20250729091304-312-462-757.jpg",
|
|
"20250729101639-845-837-748.jpg", "20250729150847-216-665-480.jpg",
|
|
"20250729152047-863-915-863.jpg", "20250729152047-872-458-985.jpg",
|
|
"20250729152047-915-601-759.jpg", "20250730093300-400-680-981.jpg",
|
|
"20250730101956-808-881-885.jpg"
|
|
]
|
|
|
|
# 대상 디렉토리가 없으면 생성
|
|
if not os.path.exists(dest_dir):
|
|
os.makedirs(dest_dir)
|
|
print(f"'{dest_dir}' 디렉토리를 생성했습니다.")
|
|
|
|
copied_files = set()
|
|
# root_source_dir부터 시작해서 모든 하위 디렉토리를 재귀적으로 탐색
|
|
for dirpath, _, filenames in os.walk(root_source_dir):
|
|
for filename in filenames:
|
|
if filename in files_to_copy and filename not in copied_files:
|
|
source_file = os.path.join(dirpath, filename)
|
|
|
|
# 원본 디렉토리 구조를 유지하기 위한 경로 계산
|
|
relative_path = os.path.relpath(dirpath, root_source_dir)
|
|
new_dest_dir = os.path.join(dest_dir, relative_path)
|
|
|
|
# 새로운 목적지 디렉토리 생성
|
|
os.makedirs(new_dest_dir, exist_ok=True)
|
|
|
|
dest_file = os.path.join(new_dest_dir, filename)
|
|
|
|
shutil.copy2(source_file, dest_file)
|
|
print(f"'{filename}'을(를) '{new_dest_dir}'(으)로 복사했습니다.")
|
|
copied_files.add(filename)
|
|
|
|
# 복사되지 않은 파일 확인
|
|
missing_files = set(files_to_copy) - copied_files
|
|
if missing_files:
|
|
print("\n다음 파일들은 찾지 못했습니다:")
|
|
for filename in sorted(list(missing_files)):
|
|
print(f"- {filename}")
|
|
|
|
if __name__ == "__main__":
|
|
copy_target_files_with_structure()
|