PDA

Visualizza la versione completa : [bash scripting] confontare hash md5 di due insiemi di file


Rommel
23-08-2005, 11:04
ciao a tutti,
ho due insiemi di file: uno su un cd, l'altro su una cartella dell'hard disk. vorrei controllare la corrispondenza dei rispettivi hash md5. ho pensato ad una cosa simile:

#!/bin/bash
#
for FILE in './*'; do
md5sum $FILE >> md5list | qualcosa che mi sostituisca gli spazi del nome del file con un _
done

sapete come fare? grazie

vortex87
23-08-2005, 11:10
Per sostiture caratteri si possono usare "sed" o "tr" :stordita:

sed s/ /_/
tr ' ' '_'

Anche se non capisco bene come possa funzionare lo script che hai fatto. :fagiano:

Rommel
23-08-2005, 13:38
#!/bin/bash
#
for FILE in './*'; do
md5sum $FILE | tr ' ' '_' | tr '__' ' ' >> md5list
done

exit 0
sarebbe l'apoteosi della cattiva programmazione, ma almeno funziona mediocremente :fagiano:

Rommel
23-08-2005, 19:44
ultimo problema:

f17906e83387c12b1281946fa44efb5e__./101_Imagine_Objects_Volume_1_(19xx)(Public_Domain_ Plus)(PD)(Disk_1_of_8).zip
201533229875c8859eb0ca1d8bd0b634__./101_Imagine_Objects_Volume_1_(19xx)(Public_Domain_ Plus)(PD)(Disk_2_of_8).zip
3eb21206727b69822b4e93d27eddcce1__./101_Imagine_Objects_Volume_1_(19xx)(Public_Domain_ Plus)(PD)(Disk_3_of_8).zip
4b38e1f7b385674e68db3704bf816ad2__./101_Imagine_Objects_Volume_1_(19xx)(Public_Domain_ Plus)(PD)(Disk_5_of_8).zip
2de3fe6e17d5eebf7ce81f8a12cfd53c__./101_Imagine_Objects_Volume_1_(19xx)(Public_Domain_ Plus)(PD)(Disk_6_of_8).zip
2648d20f813489ddc9517c45b54be8d0__./101_Imagine_Objects_Volume_1_(19xx)(Public_Domain_ Plus)(PD)(Disk_7_of_8).zip
27a9e0ba527d8783f4cb6061e712268c__./101_Imagine_Objects_Volume_1_(19xx)(Public_Domain_ Plus)(PD)(Disk_8_of_8).zip

qualcuno sa come sostituire '__' con ' ' ?
tr '__.' ' .' non funziona bene :fagiano:

cacao74
23-08-2005, 23:04
Rommel, non mi è ben chiaro il perchè di questo script.
Come mai, ti interessa cosi' tanto creare il file delle somme md5 sostituendo gli spazi? Hai incontrato problemi con questi?

Grazie. ciao

Rommel
23-08-2005, 23:56
praticamente avevo una cartella con dei file con spazi ed ho masterizzato i file su cd, attivando l'opzione di k3b per sostituire gli spazi con un underscore.
quando k3b doveva controllare la correttezza dei file, dette un errore.

dato che ho perso molto tempo ad ottenere quei file, ho pensato di verificare gli hash con uno script.

la versione completa e funzionante è:

#!/bin/bash
#
for FILE in './*'; do
md5sum $FILE | tr ' ' '_' | sed -e "s/__./ ./" >> md5list
done

exit 0

poi ho controllato gli hash con:

md5sum -c /path/of/md5list

anche se confusionario, lo script ha eseguito il suo compito :)

cacao74
24-08-2005, 00:30
Ho capito. Sul fatto che funzionasse, non avevo dubbi.

Una piccola nota: potresti 'rivedere' il tuo script utilizzando al meglio il comando 'tr' in modo da condensare le sostituzioni per sequenze contigue dello stesso carattere.


cacao74@server:~$ echo "cacao cacao" | tr " " "_"
cacao_____cacao
cacao74@server:~$ echo "cacao cacao" | tr -s " " "_"
cacao_cacao

ciao :)

Rommel
24-08-2005, 20:00
grazie ancora :ciauz:

Loading