|  | #!/bin/sh | 
|  | # SPDX-License-Identifier: GPL-2.0 | 
|  | # | 
|  | # Deduplicate files in a given destdir | 
|  | # | 
|  |  | 
|  | err() { | 
|  | echo "ERROR: $*" | 
|  | exit 1 | 
|  | } | 
|  |  | 
|  | verbose=: | 
|  | destdir= | 
|  | while test $# -gt 0; do | 
|  | case $1 in | 
|  | -v | --verbose) | 
|  | # shellcheck disable=SC2209 | 
|  | verbose=echo | 
|  | shift | 
|  | ;; | 
|  | *) | 
|  | if test -n "$destdir"; then | 
|  | err "unknown command-line options: $*" | 
|  | fi | 
|  |  | 
|  | destdir="$1" | 
|  | shift | 
|  | ;; | 
|  | esac | 
|  | done | 
|  |  | 
|  | if test -z "$destdir"; then | 
|  | err "destination directory was not specified." | 
|  | fi | 
|  |  | 
|  | if ! test -d "$destdir"; then | 
|  | err "provided directory does not exit." | 
|  | fi | 
|  |  | 
|  | if ! command -v rdfind >/dev/null; then | 
|  | err "rdfind is not installed." | 
|  | fi | 
|  |  | 
|  | $verbose "Finding duplicate files" | 
|  | rdfind -makesymlinks true -makeresultsfile true "$destdir" >/dev/null | 
|  |  | 
|  | grep DUPTYPE_WITHIN_SAME_TREE results.txt | grep -o "$destdir.*" | while read -r l; do | 
|  | target="$(realpath "$l")" | 
|  | $verbose "Correcting path for $l" | 
|  | ln --force --symbolic --relative "$target" "$l" | 
|  | done | 
|  |  | 
|  | rm results.txt |