我正在尝试找出目录中具有特定扩展名的所有文件的总大小。
我通过 rsync 进行一些异地备份,但由于另一端的带宽和磁盘空间有限,我无法完成所有操作,因此我想知道,例如,MP3 文件占用了多少磁盘空间,以便我可以决定是否从当前 rsync 排除模式列表中删除 mp3 扩展名。
这并不像在其中的“我的音乐”目录中执行“du -sh”那么简单,因为其中还存在其他文件类型。
谢谢!
答案1
你能使用 du:
查找音乐/-type f-name“*.mp3”-exec du-shc{} + | tail -1 | awk'{print $1}'
输出示例:
980米
答案2
我刚刚尝试了以下
find Music/ -name '*.mp3' -exec ls -l {} \; | awk '{ SUM += $5} END { print SUM/1024/1024 }'
并以兆字节 (1024 x 1024) 为单位获得了正确答案
答案3
find Music/ -iname "*.mp3" -type f -exec stat -c "%s" {} \; | awk '{SUM+=$0} END {print SUM/1024/1024}'
也得到了正确答案,与 pavium 的解决方案完全相同,但可能更可靠一些。
答案4
好的,这是我见过的最好的方法,它的执行速度似乎比包含 awk 的方法快几个数量级:
find "My Music/" -type f -name "*.mp3" -print0 | du -hc --files0-from=- | tail -n 1
输出:
1.3G Total