Rename files to match hash of contents
gist.github.com
Rename files to match hash of contents
1–10 of 25 posts
Re: Rename files to match hash of contents
#2Very cool!
Re: Rename files to match hash of contents
#3It would be nice to turn this into a program that stores the previous name so they can be renamed back after deduplicating. Very cool!
Re: Rename files to match hash of contents
#4 $ ls
01.jpg 03.jpg 03_copy.jpg 04.jpg 05.jpg
$ git init
Initialized empty Git repository in /tmp/test/.git/
$ git hash-object -w *
82f7d50fc89d2fd47150aff539ea4acf45ec1589
0080672bc4f248c400d569cce1a2a3d743eb1331
0080672bc4f248c400d569cce1a2a3d743eb1331
58db57b10c219b9b71f0223e58a6dc0d51cfe207
05dcde743807bddaf55ad1231572c1365d4db4af
$ find .git/objects -type f
.git/objects/00/80672bc4f248c400d569cce1a2a3d743eb1331
.git/objects/05/dcde743807bddaf55ad1231572c1365d4db4af
.git/objects/58/db57b10c219b9b71f0223e58a6dc0d51cfe207
.git/objects/82/f7d50fc89d2fd47150aff539ea4acf45ec1589
If you're curious, you can read more about how it works here: https://git-scm.com/book/en/v1/Git-Internals-Git-ObjectsRe: Rename files to match hash of contents
#5It would be nice to turn this into a program that stores the previous name so they can be renamed back after deduplicating. Very cool!
[1] https://github.com/adrianlopezroche/fdupes
Edit: just noticed that it's using md5, which is broken [2], and that it's using truncated md5 hashes.....!
[2] https://natmchugh.blogspot.ca/2015/02/create-your-own-md5-co...
Re: Rename files to match hash of contents
#6Fun! This is similar to how git stores files internally. You can do some neat tricks like this: $ ls 01.jpg 03.jpg 03_copy.jpg 04.jpg 05.jpg $ git init Initialized empty Git repository in /tmp/test/.git/ $ git hash-object -w * 82f7d50fc89d2fd47150aff539ea4acf45ec1589 0080672bc4f248c400d569cce1a2a3d743eb1331 0080672bc4f248c400d569cce1a2a3d743eb1331 58db57b10c219b9b71f0223e58a6dc0d51cfe207 05dcde743807bddaf55ad1231572c…
Re: Rename files to match hash of contents
#7Re: Rename files to match hash of contents
#8It would be nice to turn this into a program that stores the previous name so they can be renamed back after deduplicating. Very cool!
Why not just have a program that iterates through all of the files, hashes them, stores them in a map/dict and then reports if there's a duplicate? Seems easier than renaming everything multiple times.
Even such a simple optimization can make a huge difference on a large directory of images or MP3s.
Re: Rename files to match hash of contents
#9Re: Rename files to match hash of contents
#10Fun! This is similar to how git stores files internally. You can do some neat tricks like this: $ ls 01.jpg 03.jpg 03_copy.jpg 04.jpg 05.jpg $ git init Initialized empty Git repository in /tmp/test/.git/ $ git hash-object -w * 82f7d50fc89d2fd47150aff539ea4acf45ec1589 0080672bc4f248c400d569cce1a2a3d743eb1331 0080672bc4f248c400d569cce1a2a3d743eb1331 58db57b10c219b9b71f0223e58a6dc0d51cfe207 05dcde743807bddaf55ad1231572c…
This is also how FreeBSD Update and Portsnap store files. This technique has been around for a long time.