How to get total size of folders with find and du?

Use xargs(1) instead of -exec:

find . -name bak -type d | xargs du -ch

-exec executes the command for each file found (check the find(1) documentation). Piping to xargs lets you aggregate those filenames and only run du once. You could also do:

find -name bak -type d -exec du -ch '{}' \; +

If your version of find supports it.


If there are many files, using -exec ... + may be executed multiple times and you would get multiple subtotals.

An alternative is to pipe the result of find:

find . -name bak -type d -print0 | du -ch --files0-from=-

Try du -hcs. From the manpage:

 -s, --summarize
      display only a total for each argument

Tags:

Shell

Bash

Debian