Skip to content

Instantly share code, notes, and snippets.

@oh2fih
Forked from jeroenvermeulen/lndupes.py
Created July 24, 2024 07:20
Show Gist options
  • Save oh2fih/810928a48b4b71d0b11f4bb1872dd3d2 to your computer and use it in GitHub Desktop.
Save oh2fih/810928a48b4b71d0b11f4bb1872dd3d2 to your computer and use it in GitHub Desktop.
Reads fdupes(-r1) output and create relative symbolic links for each duplicate
#!/usr/bin/env python3
# source: https://gist.github.com/filipenf/e9901883d66b8da65c151cf674e5f2a9
# source: https://gist.github.com/jeroenvermeulen/a1667c60dc159c8f0487acee2cca256f
#
# Reads fdupes(-r -1) output and create relative symbolic links for each duplicate
# usage: fdupes -r1 . | ./lndupes.py
import os
from os.path import dirname, relpath, basename, join
import sys
import shlex
lines = sys.stdin.readlines()
for line in lines:
files = shlex.split( line.strip() )
first = files[0]
print (f"First: {first}")
for dup in files[1:]:
rel = os.path.relpath(dirname(first), dirname(dup))
print (f"Linking duplicate: {dup} to {join(rel,basename(first))}")
os.unlink(dup)
os.symlink(join(rel,basename(first)), dup)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment