테크인포
앱·서비스

뒤섞인 사진 수천 장을 촬영일 기준으로 정리하는 순서

구글 포토에서 날짜를 고쳐도 파일은 그대로입니다. 촬영일이 어디에 남아 있는지 규격 문서로 확인하고, 드라이런부터 시작하는 정리 순서를 정리했습니다.

📅 2026-09-18 작성✏️ 2026-11-02 수정#EXIF#사진정리#ExifTool#구글포토#메타데이터
뒤섞인 사진 수천 장을 촬영일 기준으로 정리하는 순서

한 폴더에 IMG_0421.JPG와 KakaoTalk_20260412_183355019.jpg와 Screenshot_20260530-221014.png가 뒤섞여 있고, 탐색기에서 날짜순으로 정렬하면 3년 전 여행 사진이 지난주 캡처 사이에 끼어 있습니다. 클라우드에 올려도 순서는 그대로 엉망입니다.

정리 도구를 찾기 전에 먼저 확인해야 할 것이 있습니다. 이 사진들에 촬영일이 아직 남아 있는지입니다.

날짜가 하나가 아니어서 정렬이 틀어집니다

사진 한 장에 붙어 있는 날짜는 최소 세 개입니다.

  • 촬영일 — 카메라가 찍는 순간 파일 안에 써 넣는 값입니다. 태그 이름은 DateTimeOriginal입니다.
  • 파일 생성일 — 이 파일이 지금 이 저장 장치에 만들어진 시각입니다.
  • 파일 수정일 — 파일이 마지막으로 바뀐 시각입니다.

뒤의 두 개는 사진이 아니라 파일 시스템의 정보입니다. 복사하거나, 내려받거나, 옮기는 순간 오늘 날짜로 바뀝니다. 탐색기와 클라우드 앱이 기본으로 보여 주는 것이 대개 이 값이라, 백업 한 번에 전체 순서가 무너지는 일이 생깁니다.

촬영일이 저장되는 규격은 Exif입니다. 카메라영상기기산업협회(CIPA)와 일본전자정보기술산업협회(JEITA)가 함께 만드는 DC-008 규격이고, 현행 판은 2019년 5월에 나온 Exif 2.32입니다.

여기에 한 가지 함정이 있습니다. 촬영 시각에 시간대 정보가 붙기 시작한 것은 2016년 7월의 Exif 2.31부터입니다. 이때 OffsetTime, OffsetTimeOriginal, OffsetTimeDigitized 세 필드가 추가됐습니다. 그 전에 찍혔거나 이 필드를 기록하지 않는 기기의 사진은 기록된 시각이 어느 지역의 시각인지 파일만 봐서는 알 수 없습니다. 해외에서 찍은 사진과 국내 사진을 한 폴더에 섞었을 때 순서가 어긋나는 이유가 여기에 있습니다.

구글 포토에서 날짜를 고쳐도 파일은 그대로입니다

여기서 처음 세운 가정이 틀렸습니다. 구글 포토에 날짜 수정 기능이 있으니 거기서 고쳐 두면 끝나리라 생각했는데, 구글 포토 고객센터의 안내에는 단서가 붙어 있었습니다.

사진의 날짜와 시간을 변경하는 경우 Google 포토에는 수정된 날짜와 시간이 표시됩니다. 그러나 사진을 다른 앱에 공유하거나 다운로드하는 경우 카메라에 저장된 원래 날짜와 시간이 사진에 표시될 수 있습니다.

즉 구글 포토에서 고친 날짜는 구글 쪽 기록에 남는 것이고, 파일 자체는 손대지 않습니다. 이 서비스 안에서 보는 동안에는 정돈돼 보이지만, 내려받아 외장 디스크에 옮기는 순간 원래 값으로 돌아옵니다. 여러 장을 한꺼번에 고치는 기능도 같은 조건에 놓입니다.

그래서 오래 남길 정리라면 서비스가 아니라 파일 쪽을 고쳐야 합니다.

무엇이 남아 있는지부터 조회합니다

작업 도구는 ExifTool입니다. 명령줄 도구이고 윈도우·맥·리눅스 모두에서 쓸 수 있습니다. 첫 명령은 고치는 명령이 아니라 세어 보는 명령입니다.

exiftool -r -T -filename -datetimeoriginal "사진폴더" > 목록.txt

-r은 하위 폴더까지 훑는 옵션이고, -T는 결과를 탭으로 구분해 뱉는 옵션입니다. 만들어진 목록.txt를 표 계산 프로그램으로 열면 촬영일 칸이 -로 비어 있는 파일이 한눈에 보입니다.

이 숫자가 이후 작업의 방향을 정합니다. 비어 있는 파일이 몇 장 안 되면 그냥 손으로 고치면 되고, 절반을 넘으면 정리 전략 자체를 다시 짜야 합니다.

메신저로 받은 사진은 비어 있을 가능성이 큽니다

비어 있는 파일은 대개 세 종류로 갈립니다. 화면 캡처, 스캔한 옛날 사진, 그리고 메신저로 받은 사진입니다. 앞의 둘은 촬영이라는 행위 자체가 없었으니 당연합니다. 문제는 세 번째입니다.

카카오 개발자 포럼에는 이런 질문이 올라와 있습니다.

카카오톡에서 상대방에게 image 를 전송시 원본이 아닌경우 파일내 meta data (Exif, Xmp) 정보가 삭제되어

이 글에서 카카오 담당자는 기술적인 확답 대신 일반 사용자의 전송은 고객센터로 문의하라고 안내했습니다. 즉 공식 문서로 확정된 동작이라고 말할 수는 없습니다. 규격이나 약관에 적힌 내용이 아니라 사용자 쪽 관찰이기 때문입니다.

그래서 이 항목만은 남의 말 대신 앞 절의 조회 결과로 판단하는 편이 정확합니다. 내 폴더의 KakaoTalk_으로 시작하는 파일들의 촬영일 칸이 비어 있다면, 그것이 내 환경에서의 답입니다. 확실하게 보존하고 싶은 사진은 사진으로 보내지 말고 파일이나 문서 형태로 보내 달라고 하는 편이 안전합니다.

바꾸기 전에 바꾼 척부터 해 봅니다

ExifTool에는 시험용 태그가 따로 있습니다. 공식 문서의 설명은 이렇습니다.

The write-only TestName tag provides a mechanism for dry-run testing of the rename feature. Writing TestName displays the old and new names without making any changes

filename 자리에 testname을 넣으면 파일을 건드리지 않고 결과만 보여 준다는 뜻입니다. 수천 장을 한 번에 옮기기 전에 반드시 거쳐야 할 단계입니다.

exiftool -r -d "%Y-%m-%d" "-testname<filemodifydate" "-testname<createdate" "-testname<datetimeoriginal" "사진폴더"

태그를 세 번 적은 것은 오타가 아니라 폴백입니다. 공식 문서는 이렇게 설명합니다.

ExifTool evaluates the command-line arguments left to right, and latter assignments to the same tag override earlier ones

왼쪽부터 차례로 읽고 뒤의 값이 앞의 값을 덮어씁니다. 그래서 촬영일이 있으면 촬영일이 쓰이고, 없으면 그 앞의 생성일이, 그것도 없으면 항상 존재하는 파일 수정일이 남습니다. 어느 파일도 누락되지 않으면서 가장 정확한 값이 선택됩니다.

결과가 의도대로면 testname을 directory로 바꿔 실제로 옮깁니다.

exiftool -r -P -d "%Y/%Y-%m-%d" "-directory<filemodifydate" "-directory<createdate" "-directory<datetimeoriginal" "사진폴더"

폴더는 없으면 자동으로 만들어집니다. 붙인 -P는 파일 수정일을 건드리지 않는 옵션입니다. 공식 FAQ에 따르면 ExifTool은 값을 쓸 때 파일 시스템 시각을 현재 시각으로 바꾸는 것이 기본 동작이고, -P가 원래 값을 지켜 줍니다. 기껏 정리하면서 남은 단서 하나를 지우지 않으려면 붙여 두는 편이 낫습니다.

파일명까지 날짜로 통일하려면 이렇게 씁니다.

exiftool -d "%Y%m%d_%H%M%%-c.%%e" "-filename<datetimeoriginal" "사진폴더"

날짜가 없는 사진은 파일명에서 되살립니다

앞에서 비어 있던 파일 중 상당수는 파일명에 날짜가 들어 있습니다. KakaoTalk_20260412_183355019.jpg, Screenshot_20260530-221014.png 같은 형태입니다. ExifTool은 이 문자열에서 날짜를 뽑아 태그에 써 넣을 수 있습니다.

exiftool "-alldates<filename" "사진폴더"

공식 FAQ의 설명대로 문자열에서 처음 나오는 연속된 네 자리를 연도로, 다음 두 자리를 월로 읽어 나가는 방식입니다. 구분 기호는 무엇이든 상관없습니다.

다만 여기서 되살아나는 값의 의미를 오해하면 안 됩니다. 카카오톡 파일명의 날짜는 받은 날짜이지 찍은 날짜가 아닙니다. 캡처 파일의 날짜는 캡처한 날짜입니다. 원래 촬영 시점과는 며칠에서 몇 년까지 벌어질 수 있습니다. 순서를 세우는 데는 쓸모가 있지만 기록으로서는 다른 값이므로, 이 작업은 별도 폴더에서 따로 하고 원본 사진과 섞지 않는 편이 낫습니다.

중복 제거에서 복사 번호가 함정이 됩니다

파일명 형식에 들어간 %%-c는 이름이 겹칠 때 -1, -2 같은 번호를 붙여 충돌을 피하는 장치입니다. 덕분에 덮어쓰기로 파일이 사라지는 사고는 막아 주지만, 정리의 목적이 중복 제거라면 방향이 반대로 갑니다. 같은 사진 세 장이 지워지는 대신 이름만 다르게 셋 다 살아남습니다.

날짜 정리와 중복 제거는 다른 작업입니다. 중복 판정은 이름이나 날짜가 아니라 파일 내용을 기준으로 해야 하고, 그 기능은 별도 도구의 몫입니다. 어떤 도구를 쓰든 자동 삭제 옵션은 첫 실행에서 끄고 목록만 먼저 확인하는 순서가 안전합니다. 정리 작업의 사고는 대부분 정리 도구가 아니라 자동 삭제 설정에서 납니다.

그래서 순서를 이렇게 잡게 됩니다

  1. -T 조회로 촬영일이 비어 있는 파일이 몇 장인지 먼저 셉니다.
  2. 클라우드 서비스 안에서 고친 날짜는 파일에 반영되지 않는다는 것을 전제로 둡니다.
  3. testname으로 드라이런을 돌려 결과를 눈으로 확인합니다.
  4. 폴백을 세 단계로 걸어 옮깁니다. -P를 붙여 파일 수정일을 지킵니다.
  5. 날짜가 없는 파일은 파일명에서 되살리되, 받은 날짜와 찍은 날짜를 구분해 별도 폴더에서 처리합니다.
  6. 중복 제거는 별도 단계로 미루고 자동 삭제는 끕니다.

정리가 끝난 폴더를 어디에 둘지는 또 다른 문제입니다. 보관 비용을 원 단위로 따진 계산은 백업 3-2-1 규칙의 실제 비용에 정리해 두었습니다.

지금 사진 폴더에서 -T 조회를 한 번 돌려 본다면, 촬영일이 비어 있는 파일은 몇 장이나 나올까요?

#EXIF#사진정리#ExifTool#구글포토#메타데이터
💻

테크인포 운영자

제조사 공식 문서, 독립 시험기관 결과, 공개된 요금제와 판결문을 직접 찾아 대조해 정리합니다. 출처를 확인할 수 있는 숫자만 싣고, 확인하지 못한 것은 확인하지 못했다고 적습니다. 협찬·광고는 받지 않습니다. 글에 틀린 내용이 있으면 문의 페이지로 알려주세요.