In practicing bash, I tried writing a script that searches the home directory for duplicate files in the home directory and deletes them. Here's what my script looks like now.
#!/bin/bash
# create-list: create a list of regular files in a directory
declare -A arr1 sumray origray
if [[ -d "$HOME/$1" && -n "$1" ]]; then
    echo "$1 is a directory"
else
    echo "Usage: create-list Directory | options" >&2
    exit 1
fi
for i in $HOME/$1/*; do
    [[ -f $i ]] || continue
    arr1[$i]="$i"
done
for i in "${arr1[@]}"; do
    Name=$(sed 's/[][?*]/\\&/g' <<< "$i")
    dupe=$(find ~ -name "${Name##*/}" ! -wholename "$Name")
    if [[ $(find ~ -name "${Name##*/}" ! -wholename "$Name") ]]; then
        mapfile -t sumray["$i"] < <(find ~ -name "${Name##*/}" ! -wholename "$Name")
        origray[$i]=$(md5sum "$i" | cut -c 1-32)
    fi
done
for i in "${!sumray[@]}"; do
    poten=$(md5sum "$i" | cut -c 1-32)
    for i in "${!origray[@]}"; do
        if [[ "$poten" = "${origray[$i]}" ]]; then
            echo "${sumray[$i]} is a duplicate of $i"
        fi
    done
done
Originally, where mapfile -t sumray["$i"] < <(find ~ -name "${Name##*/}" ! -wholename "$Name") is now, my line was the following:
sumray["$i"]=$(find ~ -name "${Name##*/}" ! -wholename "$Name")
This saved the output of find to the array. But I had an issue. If a single file had multiple duplicates, then all locations found by find would be saved to a single value. I figured I could use the mapfile command to fix this, but now it's not saving anything to my array at all. Does it have to do with the fact that I'm using an associative array? Or did I just mess up elsewhere?
