-exec выполняет команду для каждого найденного файла (проверьте документацию find(1)). Piping to xargs позволяет объединять эти имена файлов и запускать только du один раз. Вы также можете сделать:
find -name bak -type d -exec du -ch '{}' \; +
Если ваша версия find поддерживает его.
Ответ 2
Попробуйте du -hcs. С manpage:
-s, --summarize
display only a total for each argument
Ответ 3
Feed du с результатами поиска:
du -shc $(find . -name bak -type d)
Ответ 4
Если файлов много, использование -exec... + может выполняться несколько раз, и вы получите несколько промежуточных итогов.
Альтернатива - передать результат поиска:
find . -name bak -type d -print0 | du -ch --files0-from=-