Last active
November 30, 2019 17:19
-
-
Save issess/600807fcc0d70a1e48e45ff6cdc2d56a to your computer and use it in GitHub Desktop.
recover file name from DiskLRUCache
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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