O Python possui alguns módulos de biblioteca padrão para este chamado dircmp / filecmp.
Do PyMOTW de Doug Hellmann, Esse pequeno código te dá:
import filecmp
filecmp.dircmp('example/dir1', 'example/dir2').report()
Dá a você:
diff example/dir1 example/dir2
Only in example/dir1 : ['dir_only_in_dir1', 'file_only_in_dir1']
Only in example/dir2 : ['dir_only_in_dir2', 'file_only_in_dir2']
Identical files : ['common_file', 'not_the_same']
Common subdirectories : ['common_dir']
Common funny cases : ['file_in_dir1']
Doug explica o skinny completo no modo filecmp / dircmp melhor do que eu em:
Eu gosto do Python para coisas como essa porque ele é muito mais fácil de se conectar entre Linux / Windows / Solaris do que qualquer coisa baseada em shell.