Linux“du”命令,仅针对特定文件扩展名

Linux“du”命令,仅针对特定文件扩展名

我有一个包含很多子文件夹的文件夹。
我需要扫描.pst文件夹和子文件夹内的所有文件,然后我需要知道.pst找到的所有文件的磁盘空间总大小。

例子:

\myfolder\file1.pst 10gb
\myfolder\mysubfolder\file2.pst 2gb
\myfolder\mysubdolder\mysubsubfolder\file3.pst 8gb

Total size of all .pst files: 20gb.

我怎样才能做到这一点?谢谢你!

答案1

假设使用 GNU 工具(在 Linux 系统上假设是合理的):

find myfolder -type f -name '*.pst' -print0 |
du --human-readable --total --files0-from=-

*.pst这会查找目录中或目录下名称与模式匹配的所有常规文件myfolder。每个此类文件的路径名都以空分隔列表的形式传递给du,该列表从标准输入读取它们并报告文件占用的总大小。

答案2

您可以传递一个文件名列表作为输入du(假设是 GNU 版本,即非嵌入式 Linux 上的版本)。

find myfolder -name '*.pst' -print0 | du --files0-from=- -c

或者,如果文件名列表不太长,您可以让 shell 在命令行上传递它。这可以在 zsh 中开箱即用,并且需要shopt -s globstarbash。

cd myfolder
du -c -- **/*.pst

相关内容