Para calcular los md5sum de todos los archivos en carpetas y subcarpetas se utiliza el siguiente comando
find . -type f | xargs md5sum
El comando funcionará correctamente a menos que haya archivos con espacios en sus nombres. Para solucionarlo debemos usar el argumento -d de xargs para definir un delimitador. En este caso el delimitador será \n. Asi usara la línea completa como argumento para md5sum
find . -type f | xargs -d '\n' md5sum
Ahora si deseamos excluir los archivos de una cierta carpeta como .git añadimos
find . -type f | grep -e "^\.\/.git" --invert-match | xargs -d '\n' md5sum
Para ordenar los nombres podemos añadir sort
find . -type f | grep -e "^\.\/.git" --invert-match | sort -n | xargs -d '\n' md5sum
Finalmente para grabar todo en un archivo se usa
find . -type f | grep -e "^\.\/.git" --invert-match | grep "./checksum" --invert-match | sort -n | xargs -d '\n' md5sum > checksum
y luego para cofirmar que los archivos no han cambiado se usa
md5sum -c checksum