Come ti trovo i files duplicati :)

4 07 2007

Spesso capita di copiare files da una cartella ad un’altra e dimenticarsi poi di cancellarli, oppure non sapere di aver già quel documento salvato su di un’altra cartella…. ed intanto il disco si riempie…. ecco come faccio io ;)

Utilizzo questo script:

#! /bin/bash

LSTFILE=$(tempfile)
WRKFILE=$(tempfile)
DUPFILE=$(tempfile)

if [ -z "${#}" ]
then
        D="."
else
        D="${1}"
fi

echo "Ricerca in corso su ${D} ..."
find "$D" -type f -exec md5sum {} \; > $LSTFILE 2>/dev/null

echo "Analisi files..."
while read SUM FILE
do
        #echo "Analisi $FILE in corso... [${SUM}]"
        if grep "^${SUM} " $WRKFILE >/dev/null 2>&1
        then
                DUPLICATO=$(grep "^${SUM} " $WRKFILE | cut -d " " -f 2-)
                TIPO=$(file "${FILE}"|cut -d ":" -f 2-)
                echo "Errore $FILE uguale a $DUPLICATO (${TIPO} )"
                echo "${FILE} ${DUPLICATO} ${SUM} (${TIPO} )" >> $DUPFILE
        else
                echo "${SUM} \\"${FILE}\\"" >> $WRKFILE
        fi
done < $LSTFILE

rm -f $LSTFILE $WRKFILE 2>/dev/null
if [ -s $DUPFILE ]
then
        echo "File con i duplicati: $DUPFILE"
else
        rm -f $DUPFILE
fi
echo "Terminato."


basta lanciarlo specificando la cartella da dove iniziare le ricerche, ad esempio:
./filesDuplicati.sh /media/sda1/Multimedia/Foto/
per cercare i files duplicati contenuti nel mio HD USB esterno… ottenendo un output come questo:
Ricerca in corso su /media/sda1/Multimedia/Foto/ ...
Analisi files…
Errore /media/sda1/Multimedia/Foto/test/pippo.jpg uguale a ‘/media/sda1/Multimedia/Foto/test2/P1010244.JPG’ ( JPEG image data, EXIF standard 2.2 )
Errore /media/sda1/Multimedia/Foto/test/pippo paperio.jpg uguale a ‘/media/sda1/Multimedia/test2/Enrico/P1010244.JPG’ ( JPEG image data, EXIF standard 2.2 )
File con i duplicati: /tmp/filepIPI5p
Terminato.

Buona ricarca! ;)


Azioni

Informazione

20 risposte a “Come ti trovo i files duplicati :)”

28 07 2007
paolettopn (01:45:19) :

Ciao,

ben fatto, veramente uno script che mi serviva.

Grazie.

A presto,

paolettopn

31 07 2007
intilinux (20:33:12) :

Semplice e utile come script.. potresti fare una bella interfaccia grafica :-)

30 08 2007
Marco (08:15:44) :

Ciao, complimenti per questo script che ho trovato veramente utile. Con la modifica che ti riporto sono riuscito a cercare file duplicati anche all’interno di directory aventi un nome contenente spazi, es. ./filesDuplicati.sh /media/disk/Foto Mare 2007/

14. find "$D" -type f -exec md5sum \{} \;

Grazie, a presto!
Marco

30 08 2007
paper0k (09:41:50) :

Ottimo! ;)

6 09 2007
domi84 (19:17:16) :

Molto interessante…
Però, per noi comuni mortali che non capiamo quello che c’è scritto lì tutto colorato, XD ci puoi dare una breve spiegazione di ciò che fa questo script…
Trova due file uguali in base a cosa? Solo il nome? Nome e dimensione? Nome, dimensione e data di creazione? E elimina direttamente l’altro? O lo mette in una cartella a parte?

7 09 2007
paper0k (06:32:57) :

Per ogni file presente nella cartella corrente, o specificata come parametro di avvio, ne calcola la stringa md5 (usando md5sum) che identifica un file in maniera univoca, quindi controlla le stringhe md5 rilevate e se ne trova due uguali i due file relativi sono uguali ;)

7 09 2007
domi84 (08:39:48) :

Grazie!!!Gentilissimo!!!Anch’io credo che dovresti lavorare ad una interfaccia grafica!!!
CIAO!!!

7 09 2007
domi84 (08:41:04) :

Scusa, un’altra cosa…
Quando ha trovato due file uguali, cosa fa?Ne cancella uno?Lo sposta in una cartella a parte?Niente? XD

7 09 2007
paper0k (09:30:51) :

Niente, ti dice quali sono indicandoti un file contenente la lista di quelli duplicati (magari la lista è lunga e sarebbe difficile leggere l’output a terminale per vedere quali sono) ;)

14 09 2007
domi84 (10:28:47) :

Finalmente ho provato lo script…
OTTIMO!!!
Ha trovato più di 4000 doppioni… :-O …
Fossi in te comincerei un progetto…Sarebbe molto utile avere una GUI, e avere più opzioni…tipo cancellare direttamente i file…
CIAO!!!

14 09 2007
paper0k (21:28:43) :

Grazie! :D
Per la GUI….. ok, ci farò un pensierino ;)

19 09 2007
beppe (11:08:17) :

ti chiedo scusa, ma mi sposto sul mio problema, nella speranza che tu mi sappia proporre una soluzione. voglio salvare i lavori in un 2o hd e ho in mente di travasare i dati una volta alla settimana, perchè lascio il 2o hd sempre spento e lo accendo solo al bisogno (no virus, no usura…).
come posso ordinare al pc “copia i soli files dalla tal data in poi” ??

grazie per avermi letto, grazie se vorrai rispondermi, grazieeee se avrai una risposta propositiva, ultragrazie se mi risponderai al mio indirizzo email.

grazie. cordialmente. beppe monco

19 09 2007
paper0k (13:08:06) :

@beppe
Vedi se questo http://paper0k.wordpress.com/2006/12/05/come-cercare-i-nuovi-files/ può aiutarti, eventualmente lo puoi adattare alle tue esigenze ;)

28 10 2007
Gio (13:20:44) :

Ciao. Googlando per risolvere il mio problema ho trovato il tuo post, molto interessante, con questo script altrettanto interessante! E mi chiedevo una cosa. Ho un problema simile e vorrei sapere come è possibile modificare questo script per adattarlo alle mie esigenze.
Vengo e mi spiego.
Utilizzo kUbuntu e mantengo una directory in una partizione condivisa che aggiorno con i *.deb che apt conserva nella sua cache. Utilizzo questa directory come repository locale, in caso di reinstallazione.
Mi sorge però il problema dei pacchetti di versioni diverse che, periodicamente, devo cancellare a manina. Mi piacerebbe capire se fosse possibile automatizzare l’operazione in qualche modo. Grazie e ciao

29 10 2007
paper0k (17:42:40) :

mmm… Con questo script non credo ci puoi fare molto… dovresti invece fare una verifica sul nome del file estraendone la versione e controllare se esiste lo stesso file con lo stesso nome ma con una versione diversa, ovviamente deve essere successiva… mi dispiace, ma non so quanto ti possa aiutare questo script… :)

28 11 2007
lucam (17:09:29) :

Ciao,
se prova a lanciare lo script:

root@Pc:/# sh dupplicati.sh /home/utente/Desktop/

ricevo il seguente messaggio:

Ricerca in corso su /home/lutente/Desktop/ …
find: manca l’argomento di `-exec’
Analisi files…
Terminato.

Qualche idea?
Grazie

29 11 2007
paper0k (08:40:44) :

Invece di “sh” usa “bash” per avviare lo script ;)

30 11 2007
lucam (13:45:21) :

ciao, anche utilizzando bash mi resituisce lo stesso errore..

2 12 2007
paper0k (09:34:16) :

Ok, modificato lo script nel post, ora dovrebbe andare ;)
PS - Come al solito problemi con il CSS… :(

3 12 2007
lucam (12:56:41) :

ok, adesso funziona correttamente..

grazie :)

saluti,

Lascia un commento

Puoi usare questi tag : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>