


#!/system/bin/sh
echo
echo "EXIF date Fixer & Renamer"
echo " - by MELFY"
echo
idir=/storage/sdcard0/DCIM/Camera
edir=/storage/extSdCard/DCIM/Camera
listi=$( find $idir -iname '*.jpg' )
liste=$( find $edir -iname '*.jpg' )
list=$liste" "$listi
외장과 내장메모리 DCIM/Camera 폴더 jpg 파일의 목록 생성.
ls 명령어 대신 find 명령어 사용해서 하위폴더까지 지원.
dcnt=0
ecnt=0
for file in $list ; do
lines=
i=1
while read line; do
lines=$lines" "$line
if [ "$i" = "4" ] ;
then
break
fi
((i=i+1))
done < $file
각각의 이미지에서 앞부분 4줄만 뽑아서 lines 변수에 저장.
ttt=$( echo $lines | grep -m 1 -o '[0-9]\{4\}:[0-9]\{2\}:[0-9]\{2\} [0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}' )
tyear=${ttt:0:4}
tmon=${ttt:5:2}
tday=${ttt:8:2}
thour=${ttt:11:2}
tmin=${ttt:14:2}
tsec=${ttt:17:2}
grep -o -m 이용하여
9999:99:99 99:99:99
의 문자열 1개만 뽑음.
×9003 태그 오리지널 날짜를 뽑는게 가장 이상적이나 가장 빠른 방법으로 대체.
tstamp=$tyear"."$tmon"."$tday"-"$thour":"$tmin":"$tsec
#tstamp=$tyear"-"$tmon"-"$tday" "$thour":"$tmin":"$tsec
tname=$tyear"-"$tmon"-"$tday"_"$thour"."$tmin"."$tsec".jpg"
날짜 형식과 파일명 형식 만들기.
fname=${file##*/}
fpath=${file%/*}
파일 이름과 경로 따로 피싱
tepoch=$( busybox date -d $tstamp "+%s" )
tepoch=$((tepoch-32400))
#echo $tepoch
그 사각의 epoch 값 구하고 시차 9시간 감해서 UTC 타임으로 변경.
echo
echo "File : "$fname
echo "Date : "$tstamp
echo "Ren. : "$tname
if [ "${#tstamp}" = "19" ] ; then
시간값이 19자리 정상 추출되었는지 확인.
touch -t "$tepoch" $file
mv $file $fpath"/"$tname
epoch 값으로 파일 날짜 변경 및 파일명 변경.
dcnt=$((dcnt+1))
정상 처리 파일수 카운트
else
echo "TIMESTAMP ERROR"
ecnt=$((ecnt+1))
오류 카운트
fi
done
echo
cnt=$( echo $list | wc -w )
파일갯수 계산
echo "Image : "$cnt
echo "Error : "$ecnt
echo "Done : "$dcnt
echo
echo "Finished..."
일단 제 갤삼, 디카, 갤스1 으로 찍은 사진의 exif 데이터가 정상처리됩니다. :)
[SAMSUNG/SHV-E210S; 2.2.8/E210SKSUGNA2/4.3]


