Skip to content

Instantly share code, notes, and snippets.

@issess
Last active November 30, 2019 17:19
Show Gist options
  • Save issess/600807fcc0d70a1e48e45ff6cdc2d56a to your computer and use it in GitHub Desktop.
Save issess/600807fcc0d70a1e48e45ff6cdc2d56a to your computer and use it in GitHub Desktop.
recover file name from DiskLRUCache
#!/bin/bash
#
# recover file name from DiskLRUCache generated file (kakaotalk cache file.. etc)
#
# how to
# adb pull /sdcard/Android/data/com.kakao.talk/ kakaotalk
# renamer.sh kakaotalk output
#
display_usage() {
echo "renamer v1.0"
echo "recover unknown file name v1.0"
echo -e " Usage:\n renamer.sh [source dir] [target dir]"
}
if [ $# -le 1 ]
then
display_usage
exit 1
fi
SOURCE_DIR=${1}
TARGET_DIR=${2}
if [ "${SOURCE_DIR}" = "${TARGET_DIR}" ]; then
echo "not allowed."
fi
mkdir -pv ${TARGET_DIR}
for i in $(find $SOURCE_DIR); do # Not recommended, will break on whitespace
INPUT=${i}
result=`file -b $INPUT`
filedate=`date -r $INPUT "+%Y-%m-%d_%H-%M-%S"`
#remove SOURCE_DIR
rename=${INPUT#"$SOURCE_DIR"}
#remove /
rename=${rename#"/"}
#remove =
rename=${rename#"="}
#remove :
rename=${rename#":"}
#change / from _
rename=${rename//[\/]/_}
DATE=${filedate}
#echo $rename $SOURCE_DIR $TARGET_DIR
if [[ $result =~ JPEG ]]; then
DATE=$(exiftool -quiet -tab -dateformat "%Y:%m:%d_%H-%M-%S" -json -DateTimeOriginal "${INPUT}" | jq --raw-output '.[].DateTimeOriginal')
if [ "$DATE" == "null" ] # If exif extraction with DateTimeOriginal failed
then
DATE=$(exiftool -quiet -tab -dateformat "%Y:%m:%d_%H-%M-%S" -json -MediaCreateDate "${INPUT}" | jq --raw-output '.[].MediaCreateDate')
fi
if [ "$DATE" == "null" ] # If exif extraction with MediaCreateDate failed
then
DATE=$(exiftool -quiet -tab -dateformat "%Y:%m:%d_%H-%M-%S" -json -CreateDate "${INPUT}" | jq --raw-output '.[].CreateDate')
fi
if [ "$DATE" == "null" ] # If exif extraction with CreateDate failed
then
DATE=$(exiftool -quiet -tab -dateformat "%Y:%m:%d_%H:%M:%S" -json -ModifyDate "${INPUT}" | jq --raw-output '.[].ModifyDate')
fi
if [ -z "$DATE" ] || [ "$DATE" == "null" ] # If exif extraction failed
then
DATE=$filedate
fi
OUTPUT=${TARGET_DIR}/${DATE}_${rename}.jpg
:
elif [[ $result =~ PNG ]]; then
OUTPUT=${TARGET_DIR}/${DATE}_${rename}.png
:
elif [[ $result =~ GIF ]]; then
OUTPUT=${TARGET_DIR}/${DATE}_${rename}.gif
:
elif [[ $result =~ text ]]; then
OUTPUT=${TARGET_DIR}/${DATE}_${rename}.txt
:
elif [[ $result =~ MP4 ]]; then
OUTPUT=${TARGET_DIR}/${DATE}_${rename}.mp4
:
elif [[ $result =~ vCard ]]; then
OUTPUT=${TARGET_DIR}/${DATE}_${rename}.vcard
:
elif [[ $result =~ M4A ]]; then
OUTPUT=${TARGET_DIR}/${DATE}_${rename}.m4a
:
elif [[ $result =~ 3GPP ]]; then
OUTPUT=${TARGET_DIR}/${DATE}_${rename}.3gpp
:
elif [[ $result =~ directory ]]; then
continue
:
elif [[ $result =~ empty ]]; then
continue
:
else
echo ${INPUT} is unknown file : $result , date: $filedate
continue
fi
#rsync -ah --progress ${INPUT} ${OUTPUT}
cp ${INPUT} ${OUTPUT}
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment