O GNU diff tem opções para fazer isso (veja página de manual ):
-x, --exclude=PAT
exclude files that match PAT
-X, --exclude-from=FILE
exclude files that match any pattern in FILE
O padrão em cada caso é um glob ( *
para qualquer número de caracteres):
diff -rq -x '*.tar.gz' -x '*error_log' foo bar
Veja por exemplo: