Cerca file duplicati in OSX per hash

11

Sto cercando un modo per cercare un determinato file in OSX (Maverick ma più in generale OSX). In particolare mi piacerebbe fare quanto segue:
dato un file_001 Vorrei cercare se nel filesystem esiste una copia di questo file.
Non solo con lo stesso nome, mi piacerebbe che il metodo di confronto fosse un algoritmo di hashing come MD5, SHA ecc.

La maggior parte del "cercatore di file duplicati" ho provato a cercare tutti i duplicati in un'unità / sistema. Vorrei, invece, essere interessato a inviare un file e cercare i suoi duplicati.

Qualcuno sa se questo programma esiste? Forse qualche oscura funzione di Spotlight?

    
posta nick2k3 24.01.2014 - 20:31
fonte

5 risposte

11

Potresti anche utilizzare fdupes . Non ha un'opzione per cercare i duplicati di un file specifico, ma puoi semplicemente annullare l'output per il nome file:

fdupes -r1 .|grep filename

-r ricorre nelle directory e -1 stampa ciascun gruppo di file duplicati su una singola riga.

Altri esempi utili:

fdupes -r . trova tutti i file duplicati nella directory corrente;

fdupes -r . -dN elimina tutto tranne il primo duplicato da ciascun gruppo di duplicati;

fdupes -r dir1 dir2|grep dir1/|xargs rm rimuove i duplicati in dir1 .

Puoi installare fdupes con brew install fdupes .

    
risposta data 26.01.2014 - 17:12
fonte
6

Puoi facilmente crearlo da solo con alcuni comandi della shell:

  • find ~ -type f -exec md5 -r '{}' \; > /tmp/md5.list

    costruirà un elenco di hash MD5 su tutti i tuoi file.

  • grep $(md5 -q FILE-TO-SEARCH) /tmp/md5.list

    cercherà l'hash md5 di FILE-TO-SEARCH

L'esecuzione del primo comando (specialmente se lo si esegue su tutto il disco) richiederà molto tempo.

Se vuoi solo cercare un file, puoi anche usare

SIZE=$(stat -f '%z' FILE-TO-SEARCH)
MD5=$(md5 -q FILE-TO-SEARCH)
find ~ -type f -size ${SIZE}c | while read f; do
    [[ $MD5 = $(md5 -q "$f") ]] && echo $f
done
    
risposta data 26.01.2014 - 11:29
fonte
1

Questo dovrebbe funzionare se si sostituiscono la dimensione e l'hash per FILE_001 nel comando.

198452 byte è la dimensione del file che ho usato e il file md5 hash è 3915dc84b4f464d0d550113287c8273b

find . -type f -size 198452c -exec md5 -r {} \; |
    grep -o "3915dc84b4f464d0d550113287c8273b\ \(.*\)" | awk '{print $2}'

L'output sarà un elenco di file con i nomi dei percorsi relativi alla directory inviata al comando find.

Questo approccio ha il vantaggio che solo i file hash corrispondono alla dimensione dell'originale e genereranno solo nomi di file che corrispondono all'hash.

    
risposta data 03.12.2014 - 00:03
fonte
0

Ecco l'elenco dei programmi di utilità per questo: elenco dei cercatori di duplicati . Alcuni di questi sono altamente ottimizzati e saranno molto più veloci di qualsiasi altro script.

    
risposta data 10.12.2014 - 04:27
fonte
0

Se non vuoi fare confusione con gli script, puoi avvicinarti al comportamento che desideri con Araxis Trova duplicati File $ 10 nel Mac App Store . C'è anche una demo di 7 giorni sul loro sito web. Trova i file duplicati cerca i duplicati calcolando l'hash per ogni file.

È possibile approssimare il comportamento che si desidera impostare una cartella con il singolo file di cui si è interessati, quindi aggiungere le cartelle in cui si desidera effettuare la ricerca. In questo modo verranno inoltre segnalati altri duplicati, se presenti, nella ricerca percorsi.

Questa app ha molte funzioni di ordinamento che rendono i risultati molto facili da capire.

    
risposta data 24.03.2015 - 13:01
fonte

Leggi altre domande sui tag