Script Python com hashlib e os.walk
Além de usar find
e globstar
, o Python tem módulos para cálculo de hashsum e passeio recursivo por meio da árvore de diretórios. Assim, pode-se escrever um script simples, tal como apresentado abaixo. Na verdade, esse script é praticamente o mesmo que eu usei para esta resposta com uma pequena diferença.
Este script pressupõe que você deseje percorrer o diretório de trabalho atual de modo recursivo, portanto, certifique-se de que cd
seja o primeiro diretório desejado.
Também recomendo que você salve-o no diretório ~/bin
e execute source ~/.bashrc
antes do uso, pois assim você pode digitar o nome do script na linha de comando.
O script reúne todos os arquivos, incluindo os ocultos (com o ponto inicial no nome do arquivo).
Origem do script
#!/usr/bin/env python3
import os
import sys
from hashlib import sha1
def get_sha1sum(file_path):
sha1sum = sha1()
with open(file_path, 'rb') as fd:
data_chunk = fd.read(1024)
while data_chunk:
sha1sum.update(data_chunk)
data_chunk = fd.read(1024)
return str(sha1sum.hexdigest())
def find_files(treeroot):
for dir,subdirs,files in os.walk(treeroot):
for f in files:
full_path = os.path.join(dir,f)
path_sha1sum = get_sha1sum( full_path )
print(path_sha1sum,full_path)
def main():
find_files('.')
if __name__ == '__main__': main()
Demo Run
bash-4.3$ cd Wallpapers/
bash-4.3$ recursive_checksum.py
c66af072272d2c516e29832d0a86afa0e8e61d8c ./moon_moon.jpg
37829801c48ea0420414fc78de45adb13e4b117f ./wat.png
6cc3dd2541d00aa5fb8fd6ec703d3c7653ce4708 ./hard_drive_wallpapers/hard-drive.jpg
52fbff84cba6bbbfadc5777c1189ec39aef9176a ./hard_drive_wallpapers/hard-drive5.jpg
5bfe52eb8b31f50dc7bd1b1991dcc1d7260ec65e ./hard_drive_wallpapers/hard-drive4.jpg
f2f85eaa24c8c5b82bbedd55f887ea5fc520ac21 ./hard_drive_wallpapers/hard-drive3.jpg
bcdcf278c176fa93557627a33bedebe4e508e27a ./hard_drive_wallpapers/hard-drive2.jpg