I want to add that if you are trying to do this for files/directories in a git repository to track if they have changed, then this is the best approach:
git log -1 --format=format:%H --full-diff <file_or_dir_name>
And if it's not a git-directory/repo, then answer by @ire_and_curses is probably the best bet:
tar c <dir_name> | md5sum
However, please note that tar
command will change the output hash if you run it in a different OS and stuff. If you want to be immune to that, this is the best approach, even though it doesn't look very elegant on first sight:
find <dir_name> -type f -print0 | sort -z | xargs -0 md5sum | md5sum | awk '{ print $1 }'