如何使“du”在其输出中仅包含常规文件?

如何使“du”在其输出中仅包含常规文件?

我想根据磁盘使用情况按降序列出所有文件,并从以下位置获取了以下命令:

列出当前目录中前 10 个最大的文件:du . | sort -nr | head -n10

要列出当前目录中最大的目录:du -s * | sort -nr | head -n10

但是,它们都只列出目录。

如何du在其输出中仅包含常规文件?

奖金:

以下du选项的用途是什么(似乎没有效果)?:

 -a, --all             write counts for all files, not just directories 

答案1

如果您有 GNU ,则使用(或在 zsh 中使用 shell glob 作为参数)du向其发送常规文件(或目录,或任何您想要过滤的内容)的列表:find

find . -type f -print0 | du --files0-from=-
du *(.)  # zsh, regular non-hidden files in the current directory

du默认情况下,仅打印该目录中目录内文件大小的总和,但您也可以让它打印这些单独的文件大小,其作用如下-a

% du /usr/bin
68  /usr/bin/lou_maketable.d
100 /usr/bin/vendor_perl
464 /usr/bin/core_perl
4   /usr/bin/site_perl
1104024 /usr/bin
% du /usr/bin -a | head
4   /usr/bin/preparetips5
36  /usr/bin/autoupdate
4   /usr/bin/python3.9-config
0   /usr/bin/mkoctfile
60  /usr/bin/zdump
16  /usr/bin/fstopgm
4   /usr/bin/brltty-setcaps
40  /usr/bin/sleep
8   /usr/bin/pnmquantall
20  /usr/bin/extract_mpeg2

相关内容