짱구삼촌
15.07.10
조회 수 3564
추천 수 5
댓글 1
DCIM jpg 이미지 날짜 정보 이해/수정하기

촬영한 사진의 날짜에 관한 기록은 쉽게 3군데에서 알 수 있습니다.

1. EXIF
2. 파일명
3. 파일 생성 시각


jpg 이미지에는 EXIF (Exchangeable image file format) 정보가 들어 있습니다.
mp3의 tag 같은 정보가 들어 있다고 보시면 됩니다.
카메라의 제조사, 기기명, 조리개값, 날짜와 위치 정보등이 들어있지요.
EXIF 정보는 사용자가 고의로 수정하지 않으면 바뀌지는 않습니다.

파일명은 20150710_132031.jpg 혹은 2015-07-10_13.20.31.jpg 이런 포맷이 대표적입니다.
촬영 날짜와 시각의 정보가 들어 있습니다.
사용자가 수정하였거나 디지털카메라로 촬영한 경우 파일명에 날짜가 없을 수도 있겠네요.

파일의 생성 시각정보는 탐색기 등으로 보면 언제 파일이 만들어졌는지 보여집니다.
날짜순 정렬을 하면 이 정보를 기준으로 배열이 진행됩니다.
백업을 했다가 복원하거나 다른 기기로 옮기는 경우 혹은 다른 폴더로 복사한 경우 이 부분이 달라져서 정렬이 흐트러지는 문제가 발생할 수 있습니다.

몇가지 방법을 소개합니다.
각각의 정보를 읽어서 다른 정보를 수정하는 방법에 관한 도움말입니다.

1.
EXIF 데이터를 읽거나 수정하는 대표적인 툴은 exiftool, jdraw, jhead 등이 있습니다.
물론 exif 정보를 본인이 수정할 수도 있겠지만 수정해야 하는 상황은 그렇게 빈번하지 않겠지요.

jhead -autorot -nf%Y%m%d_%H%M%S *.jpg

이 명령은 그 위치의 모든 jpg 파일의 exif 날짜 데이터를 읽어서 파일명을 변경해줍니다.
디지털 카메라로 찍은 일련번호 붙은 파일명을 날짜 포맷의 파일명으로 한방에 바꿀 수 있습니다.
%Y%m%d_%H%M%S 부분을 수정하면 본인이 원하는 형태의 파일명으로 바꿀 수도 있겠습니다.
%Y-%m-%d_%H.%M.%S 이렇게 하면 옛날 포맷의 파일명이 되겠지요.

2.
흔히들 파일을 옮겼을 경우 파일의 생성 날짜가 엉키는 문제로 성가시게 됩니다.
물론 이 부분은 파일의 내용을 바꾸지는 않지만 날짜의 흐름을 읽기가 불편해집니다.
비지박스 touch 명령을 이용한 방법입니다.

touch -t "20150710.132031" image.jpg

파일의 날짜를 지정한 시각으로 바꿔줍니다.
이 기능을 스크립트로 만들어 봤습니다.


idir=/sdcard/DCIM/Camera
edir=/storage/extSdCard/DCIM/Camera

외장메모리와 내장메모리의 사진 이미지의 경로를 지정합니다.

jpgs=$( find $idir $edit -type f -iname "*.jpg" )

두 경로에 존재하는 모든 jpg 이미지를 변수로 받아 옵니다.
모든 파일을 루프로 확인합니다.

for img in $jpgs ; do
jpg=$( basename $img )
경로를 제외한 파일명을 뽑습니다.

tstamp=$( echo $jpg | tr -cd "[[:digit:]]" )
파일명에서 문자나 기호는 제외한 숫자만 뽑습니다.
파일명의 형식에 상관없이 숫자만 뽑았습니다.
20150710132031 이런 식으로 14자리 숫자만 가져온다는 거지요.

if [ "${#tstamp}" = "14" ] ; then
14자리 숫자가 아니면 건너뜁니다.

echo $jpg
tsdate=${tstamp:0:8}
tstime=${tstamp:(-6)}
14자리 숫자 중에서 앞부분 8자리는 날짜 변수에
뒷부분 6자리는 시각변수로 잡았습니다.

touch -t $tsdate"."$tstime $img
이미지 파일의 시각을 지정한 시각으로 바꿔줍니다.

else
echo $purple"BAD Filename: "$N$jpg
fi
done


참고) touch 명령의 대표적인 다른 2가지 기능을 적어봅니다.
-t 옵션이 없으면 현재 시각으로 그 파일의 날짜를 바꿔줍니다.
만약 파일이 존재하지 않으면 사이즈 0 의 깡통 파일을 현재 시각으로 생성해줍니다.
파일을 생성하는 가장 쉬운 방법중 하나입니다.

첨부한 jhead 파일은 system/xbin 에 755 퍼미션으로 넣으십시오.

Extra Form
첨부
ing.sh  [File Size:1.1KB/Download:3]
jhead  [File Size:563.7KB/Download:1]
댓글을 남겨야 다운로드가 가능합니다. 감사의 댓글을 달고 오른쪽 확인버튼을 눌러주세요.
다운로드시 일주일에 한개 이상의 게시물 작성이 필요합니다. 지금 자유게시판에 회원님의 하루를 남겨보세요.
추천♡버튼을 잊지 마세요. 추천인과 회원님 모두 포인트가 적립됩니다.

짱구삼촌 님의 SIGNATURE

profile

그래도 아직은 사랑이, 낡은 외투처럼 너덜너덜해져서 이제는 갖다 버려야 할, 그러나 버리지 못하고...

"신은 그저 질문하는 자일 뿐... 운명은 내가 던지는 질문이다. 답은 그대들이 찾아라."

댓글 1
  • ?
    jhead 는 리눅스에서 많이 쓰던 명령어인데...ㅎㅎ 안드에서도 되는군요... 소개 감사합니다.
댓글 쓰기 권한이 없습니다.
정렬 목록 검색 쓰기
등록된 글이 없습니다.
1 - 2