dotfiles/.local/bin/scripts/duploc
2022-05-26 08:53:35 +02:00

10 lines
619 B
Bash
Executable file

#!/bin/sh -e
# Delete files under current or given path which exist elsewhere as listed in the locate database
# Matches first by name, then by checksum (currently inefficiently via md5)
find "$@" -size +5M -type f -exec sh -c "IFS=$'\n'"'
filepath="{}"
target="$(basename "$filepath" | synct-unarchive)"
highlight "$filepath"
for existing in $(locate -b "$target")
do test "$(realpath "$target")" != "$(realpath "$existing")" -a -f "$existing" -a "$(md5sum "$existing" | cut -d\ -f1)" = "$(md5sum "$filepath" | cut -d\ -f1)" && echo "Found duplicate at $existing" && rm -vi "$filepath" && break
done' \;