Skip to content

Instantly share code, notes, and snippets.

@filipenf
Created August 19, 2016 19:04
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save filipenf/e9901883d66b8da65c151cf674e5f2a9 to your computer and use it in GitHub Desktop.
Save filipenf/e9901883d66b8da65c151cf674e5f2a9 to your computer and use it in GitHub Desktop.
Reads fdupes(-r1) output and create relative symbolic links for each duplicate
#!/usr/bin/env python
# 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
lines = sys.stdin.readlines()
for line in lines:
files = line.strip().split(' ')
first = files[0]
print "First: %s "% first
for dup in files[1:]:
rel = os.path.relpath(dirname(first), dirname(dup))
print "Linking duplicate: %s to %s" % (dup, join(rel,basename(first)))
os.unlink(dup)
os.symlink(join(rel,basename(first)), dup)
@jeroenvermeulen
Copy link

Hi @filipenf, thanks for this great script!
I improved your script, because it did split wrong when there were spaces one of the filenames.
Updated version: https://gist.github.com/jeroenvermeulen/a1667c60dc159c8f0487acee2cca256f

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment