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?
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
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:
In teoria ti segnalerà 2 volte ogni doppione (ovvero ogni volta che incontra uno dei file doppi).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
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
Mettendo $f tra virgolette si dovrebbe risolvere il problema degli spazi.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
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.Originariamente inviato da vortex87
Mettendo $f tra virgolette si dovrebbe risolvere il problema degli spazi.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
Le cartelle sono completamente distinte o sono sotto una radice comune?
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
Beh allora la cosa più comoda è metterle entrambe nella stessa radice (che per comodità contiene solo quelle 2 directory) e modificare così lo script:
Forsecodice:#!/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
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
PregoOriginariamente inviato da spqr
Perfetto e comodissimo, grazie mille vortex!
Sapersi orientare col bash è veramente la svolta...
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
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