递归输出目录中某些类型的所有文件的文件大小?

时间:2018-09-07 18:09:16

标签: linux unix

我正在尝试递归获取目录中PDF文件的总大小。我尝试在目录中运行以下命令,但是递归部分无法正常运行,因为它似乎仅报告当前目录中的文件,而不包括其中的目录。我期望结果将接近100 GB,但是该命令仅报告大约200 MB的文件。

(function () {
    if (typeof window.R === 'undefined') {
        var s = document.createElement('script');
        s.setAttribute('src', 'source goes here!');
        document.body.appendChild(s);  // this appends the script to the body you can also use document.head.appendChild(s) to append to the head
    }
}());

请帮助!

2 个答案:

答案 0 :(得分:0)

使用stat -c %n,%s获取单个文件的file namesize。然后使用awk来计算尺寸并打印。

$ find . -name '*.pdf' -exec stat -c %n,%s {} \; | awk -F, '{sum+=$2}END{print sum}'

实际上,您不需要%n,因为您只需要总和:

$ find . -name '*.pdf' -exec stat -c %s {} \; | awk '{sum+=$1}END{print sum}'

答案 1 :(得分:0)

您可以使用以下方法获取所有文件的大小总和:

find . -name '*.pdf' -exec stat -c %s {} \; | tr '\n' '+' | sed 's/+$/\n/'| bc

首先find查找指定的所有文件,并且每个文件运行stat都会显示文件大小。然后,我使用tr使所有换行符带有'+',然后删除换行符的尾部'+',并将其传递给bc,后者打印出总和。