• Uncategorized

About linux : How-to-calculate-the-total-size-of-certain-files-only-recursive-in-linux

Question Detail

I’ve got a bunch of files scattered across folders in a layout, e.g.:

dir1/somefile.gif
dir1/another.mp4
dir2/video/filename.mp4
dir2/some.file
dir2/blahblah.mp4

And I need to find the total disk space used for the MP4 files only. This means it’s gotta be recursive somehow.

I’ve looked at du and fiddling with piping things to grep but can’t seem to figure out how to calculate just the MP4 files no matter where they are.

A human readable total disk space output is a must too, preferably in GB, if possible?

Any ideas? Thanks

Question Answer

For individual file size:

find . -name "*.mp4" -print0 | du -sh --files0-from=- 

For total disk space in GB:

find . -name "*.mp4" -print0 | du -sb --files0-from=-  | awk '{ total += $1} END { print total/1024/1024/1024 }'

You can simply do :

find -name "*.mp4" -exec du -b {} \; | awk 'BEGIN{total=0}{total=total+$1}END{print total}'

The -exec option of find command executes a simple command with {} as the file found by find.
du -b displays the size of the file in bytes.
The awk command initializes a variable at 0 and get the size of each file to display the total at the end of the command.

This will sum all mp4 files size in bytes:

find ./ -name "*.mp4" -printf "%s\n" | paste -sd+ | bc

You may also like...

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.