
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! ![]()
Ciao,
ben fatto, veramente uno script che mi serviva.
Grazie.
A presto,
paolettopn
Semplice e utile come script.. potresti fare una bella interfaccia grafica
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
Ottimo!
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?
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
Grazie!!!Gentilissimo!!!Anch’io credo che dovresti lavorare ad una interfaccia grafica!!!
CIAO!!!
Scusa, un’altra cosa…
Quando ha trovato due file uguali, cosa fa?Ne cancella uno?Lo sposta in una cartella a parte?Niente? XD
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)
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!!!
Grazie!

Per la GUI….. ok, ci farò un pensierino
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
@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
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
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…
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
Invece di “sh” usa “bash” per avviare lo script
ciao, anche utilizzando bash mi resituisce lo stesso errore..
Ok, modificato lo script nel post, ora dovrebbe andare

PS - Come al solito problemi con il CSS…
ok, adesso funziona correttamente..
grazie
saluti,