Skip to content

Instantly share code, notes, and snippets.

@aramosf
Created August 16, 2019 23:53
Show Gist options
  • Save aramosf/47c3b42f5f9e0deedb287096ffff8afd to your computer and use it in GitHub Desktop.
Save aramosf/47c3b42f5f9e0deedb287096ffff8afd to your computer and use it in GitHub Desktop.
find duplicate images based on exif information and ask to delete (jpg, heic)
#!/bin/bash
# locate the same images (jpeg and heic) based on some EXIF information
# and request the file to be deleted
rm all.txt
rm duplicates.txt
IFS="
"
for i in *[JjpPGg]; do
md5=`exiftool -CreateDate -DateTimeOriginal -Model -ModifyDate -GPSLatitudeRef -GPSLatitude -GPSLongitude -GPSLongitudeRef -GPSAltitude -GPSAltitudeRef -GPSSpeed -GPSDateStamp -ImageSize -Megapixels -DateTimeOriginal -RuntimeValue $i|md5sum -`;
echo "$md5:$i";
done >>all.txt
for i in *[HhEeiIcC]; do
md5=`exiftool -CreateDate -DateTimeOriginal -Model -ModifyDate -GPSLatitudeRef -GPSLatitude -GPSLongitude -GPSLongitudeRef -GPSAltitude -GPSAltitudeRef -GPSSpeed -GPSDateStamp -ImageSize -Megapixels -DateTimeOriginal -RuntimeValue $i|md5sum -`;
echo "$md5:$i";
done >>all.txt
sort -k1,1 -k2n all.txt > duplicates.txt
for md5 in `cat duplicates.txt | awk '{print $1}' | uniq -d`; do
f=`grep $md5 duplicates.txt|awk -F: '{print $2}'`;
files=()
i=0
for file in $f; do
files+=($file)
echo -n "[$i]: "
ls -l $file
i=$(( $i + 1 ))
done
for i in "${!files[@]}"; do
printf "%s\t%s\n" "$i" "${files[$i]}"
done
read -p "Delete?: " n
rm ${files[$n]}
echo "Deleted ${files[$n]}"
unset files
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment