How to calculate the total size of certain files only, recursive, in linux

≡放荡痞女 提交于 2020-06-22 07:29:30

问题


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


回答1:


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 }'



回答2:


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.




回答3:


This will sum all mp4 files size in bytes:

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


来源:https://stackoverflow.com/questions/28900112/how-to-calculate-the-total-size-of-certain-files-only-recursive-in-linux

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!