Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di spqr
    Registrato dal
    Aug 2002
    Messaggi
    978

    Programma per confrontare md5

    Devo confrontare una quantità notevole di files (ppt nella fattispecie) per vedere se ci sono doppioni ed eventualmente eliminarli.
    Confrontare i codici md5 uno per uno è un po' scomodo, sapete se esiste qualche utility che possa aiutarmi?
    "Guardateli i credenti di tutte le religioni! Chi odiano essi più di ogni altro? Colui che spezza le lor tavole dei valori, il violatore, il corruttore. Ma questi è colui che crea." Nietzsche

  2. #2
    Io userei la shell.
    Considera che sono su Windows, quindi non posso provare se quanto scrivo funziona, in linea di massima comunque dovrebbe essere un metodo valido, anche se probabilmente avrà bisogno di qualche aggiustamento:

    codice:
    #!/bin/bash
    
    for f in *.ppt; do
    md5sum $f >> lista.txt
    done
    
    for f in *.ppt; do
    md5=$(md5sum $f | awk '{print $1}')
    if [ $(grep "$md5" lista.txt | wc -l) -gt 1 ]; then
       echo "Doppione:"
       grep "$md5" lista.txt
    fi
    done
    In teoria ti segnalerà 2 volte ogni doppione (ovvero ogni volta che incontra uno dei file doppi).

  3. #3
    Utente di HTML.it L'avatar di spqr
    Registrato dal
    Aug 2002
    Messaggi
    978
    Grazie vortex, intendevo proprio qualcosa di simile.
    Purtroppo non sono in grado di fare da solo gli aggiustamenti (nella mia lista di cose da fare c'è "imparare bash" da circa 2 anni ma ancora non ho iniziato ).
    Se hai tempo e voglia i punti sono questi:

    -Penso ci sia qualche problema con i file che hanno un nome con lo spazio, tipo per "file uno.ppt" mi dà:
    md5sum: file: No such file or directory
    md5sum: uno: No such file or directory
    etc

    -Inoltre mi servirebbe confrontare anche file che si trovano in 2 cartelle differenti.
    "Guardateli i credenti di tutte le religioni! Chi odiano essi più di ogni altro? Colui che spezza le lor tavole dei valori, il violatore, il corruttore. Ma questi è colui che crea." Nietzsche

  4. #4
    codice:
    #!/bin/bash
    
    for f in *.ppt; do
    md5sum "$f" >> lista.txt
    done
    
    for f in *.ppt; do
    md5=$(md5sum "$f" | awk '{print $1}')
    if [ $(grep "$md5" lista.txt | wc -l) -gt 1 ]; then
       echo "Doppione:"
       grep "$md5" lista.txt
    fi
    done
    Mettendo $f tra virgolette si dovrebbe risolvere il problema degli spazi.

    Le cartelle sono completamente distinte o sono sotto una radice comune?

  5. #5
    Utente di HTML.it L'avatar di spqr
    Registrato dal
    Aug 2002
    Messaggi
    978
    Originariamente inviato da vortex87
    codice:
    #!/bin/bash
    
    for f in *.ppt; do
    md5sum "$f" >> lista.txt
    done
    
    for f in *.ppt; do
    md5=$(md5sum "$f" | awk '{print $1}')
    if [ $(grep "$md5" lista.txt | wc -l) -gt 1 ]; then
       echo "Doppione:"
       grep "$md5" lista.txt
    fi
    done
    Mettendo $f tra virgolette si dovrebbe risolvere il problema degli spazi.

    Le cartelle sono completamente distinte o sono sotto una radice comune?
    Il percorso delle 2 directory è indifferente, posso metterle dove voglio ma l'importante è che siano 2 cartelle distinte.
    Con le virgolette funziona, grazie!
    "Guardateli i credenti di tutte le religioni! Chi odiano essi più di ogni altro? Colui che spezza le lor tavole dei valori, il violatore, il corruttore. Ma questi è colui che crea." Nietzsche

  6. #6
    Beh allora la cosa più comoda è metterle entrambe nella stessa radice (che per comodità contiene solo quelle 2 directory) e modificare così lo script:

    codice:
    #!/bin/bash
    
    for f in */*.ppt; do
    md5sum "$f" >> lista.txt
    done
    
    for f in */*.ppt; do
    md5=$(md5sum "$f" | awk '{print $1}')
    if [ $(grep "$md5" lista.txt | wc -l) -gt 1 ]; then
       echo "Doppione:"
       grep "$md5" lista.txt
    fi
    done
    Forse

  7. #7
    Utente di HTML.it L'avatar di spqr
    Registrato dal
    Aug 2002
    Messaggi
    978
    Perfetto e comodissimo, grazie mille vortex!
    Sapersi orientare col bash è veramente la svolta...
    "Guardateli i credenti di tutte le religioni! Chi odiano essi più di ogni altro? Colui che spezza le lor tavole dei valori, il violatore, il corruttore. Ma questi è colui che crea." Nietzsche

  8. #8
    Originariamente inviato da spqr
    Perfetto e comodissimo, grazie mille vortex!
    Sapersi orientare col bash è veramente la svolta...
    Prego

    Eh sì, una volta imparate almeno le basi, per certe cose è una comodità unica
    Nel caso: http://www.pluto.it/files/ildp/guide/abs/index.html

  9. #9
    Utente di HTML.it L'avatar di spqr
    Registrato dal
    Aug 2002
    Messaggi
    978
    Un paragrafo al giorno toglie il forum di torno...
    Grazie anche del materiale, ciao!
    "Guardateli i credenti di tutte le religioni! Chi odiano essi più di ogni altro? Colui che spezza le lor tavole dei valori, il violatore, il corruttore. Ma questi è colui che crea." Nietzsche

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.