1
0
mirror of https://github.com/privacyguides/privacyguides.org.git synced 2025-08-30 22:59:15 +00:00
Files
privacyguides.org/tools/symlink-duplicates.sh

21 lines
569 B
Bash

#!/bin/bash
set -euo pipefail
declare -A file_hashes
find . -type f | while read -r file; do
hash=$(sha256sum "$file" | awk '{print $1}')
if [[ -n "${file_hashes[$hash]+_}" ]]; then
# Duplicate found, replace with symlink to first copy
first="${file_hashes[$hash]}"
# Remove the duplicate file
rm "$file"
# Create symlink (relative path)
ln -s "$(realpath --relative-to="$(dirname "$file")" "$first")" "$file"
echo "Replaced duplicate: $file -> $first"
else
# First time seeing this hash
file_hashes[$hash]="$file"
fi
done