[Risolto] listare solo i file doppi bash
[Risolto] listare solo i file doppi bash
ciao a tutti ,
vorrei verificare quali sono i file doppi in una cartella tramite hash e avere su un file la lista dei soli file che risultano doppi.
il comando che uso è il seguente
[root@pippo prova]# find . -type f | xargs -i md5sum {} | sort -k 1
che mi crea un output di questo tipo:
1bc50c66677667a56c3208e06cf64159 ./prova.txt
244fcba2093a5c942ee11f0f3f28f21f ./123.txt
244fcba2093a5c942ee11f0f3f28f21f ./pippo.txt
244fcba2093a5c942ee11f0f3f28f21f ./qwerty.txt
dc49391bf8a63cc7f93e7ffcf9d1c82e ./2.txt
dc49391bf8a63cc7f93e7ffcf9d1c82e ./3.txt
eb3ae5ddf6e3e2dc8e317dac03aee249 ./1.txt
ora io vorrei fare in modo di avere (magari sul file) la lista con solo i file doppi: cioè il file 2.txt ed il 3.txt con il reltivo hash dc49391bf8a63cc7f93e7ffcf9d1c82e e i tre file con hash 244fcba2093a5c942ee11f0f3f28f21f in modo da avere nel file solo tutti i doppioni.
Mi sapere dire un modo per estrarre da questa lista solo i doppioni?
grazie
Gabriele
vorrei verificare quali sono i file doppi in una cartella tramite hash e avere su un file la lista dei soli file che risultano doppi.
il comando che uso è il seguente
[root@pippo prova]# find . -type f | xargs -i md5sum {} | sort -k 1
che mi crea un output di questo tipo:
1bc50c66677667a56c3208e06cf64159 ./prova.txt
244fcba2093a5c942ee11f0f3f28f21f ./123.txt
244fcba2093a5c942ee11f0f3f28f21f ./pippo.txt
244fcba2093a5c942ee11f0f3f28f21f ./qwerty.txt
dc49391bf8a63cc7f93e7ffcf9d1c82e ./2.txt
dc49391bf8a63cc7f93e7ffcf9d1c82e ./3.txt
eb3ae5ddf6e3e2dc8e317dac03aee249 ./1.txt
ora io vorrei fare in modo di avere (magari sul file) la lista con solo i file doppi: cioè il file 2.txt ed il 3.txt con il reltivo hash dc49391bf8a63cc7f93e7ffcf9d1c82e e i tre file con hash 244fcba2093a5c942ee11f0f3f28f21f in modo da avere nel file solo tutti i doppioni.
Mi sapere dire un modo per estrarre da questa lista solo i doppioni?
grazie
Gabriele
Ultima modifica di gabo il lunedì 7 aprile 2008, 13:59, modificato 1 volta in totale.
Re: listare solo i file doppi bash
C'è un programmino che fa esattamente quello che ti serve e si chiama fdupes.
ciao,
Marco
ciao,
Marco
http://mtuxland.blogspot.com - fotografia, informatica, musica e tutto quello che mi passa per la testa
Re: listare solo i file doppi bash
si lo so ma volevo farlo a mano perchè almeno è esportabile dato che vorrei usarlo anche su una macchina AIX dove ho lo stesso problema di file doppi!
- IppatsuMan
- Prode Principiante
- Messaggi: 199
- Iscrizione: mercoledì 14 febbraio 2007, 1:31
- Contatti:
Re: listare solo i file doppi bash
In python è piuttosto semplice.
E ha anche complessità O(N). Se vuoi usare solo bash l'unico metodo che mi viene in mente è molto meno efficiente (O(N^2)): sarebbe salvare il risultato di
Tenersi gli hash duplicati:
Poi scorrere duplhashes e per ogni riga trovare in hashes i file corrispondenti.
Codice: Seleziona tutto
#!/usr/bin/python
import sys, commands
if __name__ == "__main__":
if len(sys.argv)!=2:
print "Uso: %s CARTELLA" % sys.argv[0]
print " CARTELLA: cartella in cui ricercare"
exit(-1)
findoutput = commands.getoutput("find \""+sys.argv[1]+"\" -type f | xargs -i md5sum {}").split("\n")
result = {}
for s in findoutput:
md5sum = s[:32]
filename = s[34:]
if not result.has_key(md5sum):
result[md5sum] = [filename]
else:
curres = result[md5sum]
curres.append(filename)
result[md5sum] = curres
for hash, l in result.items():
if len(l)>1:
for f in l:
print "%s %s" % (hash, f)
Codice: Seleziona tutto
find . -type f | xargs -i md5sum {} | sort > hashesCodice: Seleziona tutto
cat hashes | cut -d" " -f 1 | uniq -d > duplhashesハッカー
Re: listare solo i file doppi bash
ok thx funziona.. approfondirò anche a riguardo dello script in python
Grazie ancora
saluti
Gabriele
Grazie ancora
saluti
Gabriele
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti
