11

我有一堆文件分散在布局中的文件夹中,例如:

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

而且我只需要找到用于 MP4 文件的总磁盘空间。这意味着它必须以某种方式递归。

我已经看过du并摆弄了一些东西,grep但似乎无法弄清楚如何只计算 MP4 文件,无论它们在哪里。

如果可能的话,人类可读的总磁盘空间输出也是必须的,最好以 GB 为单位?

有任何想法吗?谢谢

4

3 回答 3

10

对于单个文件大小:

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

对于以 GB 为单位的总磁盘空间:

find . -name "*.mp4" -print0 | du -sb --files0-from=-  | awk '{ total += $1} END { print total/1024/1024/1024 }'
于 2015-03-06T13:55:45.160 回答
4

你可以简单地做:

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

find 命令的 -exec 选项执行一个简单的命令,其中 {} 作为 find 找到的文件。du -b 以字节为单位显示文件的大小。awk 命令在 0 处初始化一个变量,并获取每个文件的大小以在命令末尾显示总数。

于 2015-03-06T14:18:35.967 回答
3

这将以字节为单位汇总所有 mp4 文件大小:

find ./ -name "*.mp4" -printf "%s\n" | paste -sd+ | bc
于 2015-03-06T14:04:26.053 回答