Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Εχω καποια αρχεια (αρκετα) και θελω με μια κινηση να παραγω md5 και sha1 sums, για ολα τα αρχεια.

 

Δηλαδη μια εντολη που να διαβασει ολα τα αρχεια μεσα σε φακελους/υποφακελους κλπ. και να παραγει ενα αρχειο sum σε στυλ λιστας (το καθε sum του καθε αρχειου σε δικη του γραμμη).

 

Καπως ετσι:

 

md5sums.txt

-----------------------------------------------------------

37b2b85d86cf045fc06e612a1a9c9706 /path/to/file1.iso

d4d9472b5915f61ee9809c44e7fe9bad /another/path/to/file2.iso

73284a78b3171bc5cb1efd2906b09bd3 /some/path/file3.iso

 

κλπ κλπ...

 

Γινεται?

Δημοσ.

Το δοκίμασα σε Python 3.3. Λογικά και 3.2 θα είναι οκ. Σε Python2 δε δοκίμασα αλλά νομίζω ότι δε θα τρέχει. Νομίζω είχε αλλάξει το API για τα hashes.

 

To σώζεις σε ενα αρχείο με κατάληξη *.py και το βάζεις στο root folder. Δεν ακολουθεί symbolic links, αλλά αν το θες γίνεται. Αν θες να αλλαξεις τον τύπο του hash απλά αλλάζεις το md5 σε ένα εκ των sha1(), sha224(), sha256(), sha384() sha512()

 

http://docs.python.o...ry/hashlib.html

 

Αν δεν ξέρεις πως να το τρέξεις, ρώτας.

 

>
import os
import hashlib

DELIMITER = "\t"
OUTPUT = "md5sums.txt"

# create the hash object
m = hashlib.md5()

# walk the directory tree recursively and calculate the hash for each file
lines = []
for dirpath, dirnames, filenames in os.walk("."):
   for filename in filenames:
    path = os.path.join(dirpath, filename)
    m.update(filename.encode("utf8"))
    lines.append(m.hexdigest() + DELIMITER + path)

# write the results to a text file
with open(OUTPUT, "w") as f:
   f.write("\n".join(lines))

 

ps. Απορία. Έχω βάλει κενά στον κώδικα όμως τα μετατρέπει σε tabs. Γιατί?

  • Like 2
Δημοσ.

>for f in *
do
echo `md5sum $f` > hashfile
done

αυτό το βάζεις μέσα στο φάκελο με τα αρχεία

γίνεται και παραμετρικό αν θες να παίρνει ότι φάκελο θες

  • Like 1
Δημοσ.

>
% find /path/to/dir -type f -exec sha1sum {} \; |tee /tmp/checksums.sha1

ή

% cd /path/to/dir
% find . -type f -exec sha1sum {} \; |tee /tmp/checksums.sha1

 

Θα βρει όλα τα αρχεία που βρίσκονται στο /path/to/dir και όλους τους υποκαταλόγους και θα τρέξει την sha1sum εμφανίζοντας στην οθόνη το αποτέλεσμα και παράλληλα αποθηκεύοντας το στο checksums.sha1 αρχείο.

 

Αν θέλεις τα αρχεία να έχουν full path χρησιμοποιείς την 1η εκδοχή. Αν σε εμποδίζει το full path και δεν το θέλεις χρησιμοποιείς τη 2η.

  • Like 1
Δημοσ.

Ειστε τελειοι! :-D

Τρεις διαφορετικοι τροποι και παιζουν και οι τρεις.

 

Ευχαριστω για τον κοπο σας, ειδικα τον pmav99 που εγραψε ολοκληρο python script!

Δημοσ.

Το δοκίμασα σε Python 3.3. Λογικά και 3.2 θα είναι οκ. Σε Python2 δε δοκίμασα αλλά νομίζω ότι δε θα τρέχει. Νομίζω είχε αλλάξει το API για τα hashes.

Για να σου δωσω και λιγο feedback αγαπητε pmav99, το script σου τρεχει και με Python2.

Μολις το ετρεξα σε Windows 8 με ActivePython-2.7.2.5

Και σε Linux φυσικα, κανενα προβλημα (Python 2.7.3)

 

:D

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...