我试图在目录中递归地获得PDF文件总大小的总和。我已尝试在目录中运行以下命令,但递归部分无法正常工作,因为它似乎只报告当前目录中的文件而不包括其中的目录。我期望结果大小接近100 GB,但该命令仅报告大约200 MB的文件。
find . -name "*.pdf" | xargs du -sch
请帮忙!
使用stat -c %n,%s
获取各个文件的file name
和size
。然后使用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}'
您可以使用以下方法获取所有文件的大小总和:
find . -name '*.pdf' -exec stat -c %s {} \; | tr '\n' '+' | sed 's/+$/\n/'| bc
首先find
找到指定的所有文件,并为每个文件运行stat,它打印文件大小。然后我使用tr
使用'+'来换取所有换行符,然后我删除换行符的尾部'+'并将其传递给bc,后者打印总和。