Bash

如何使du在其輸出中僅包含正常文件?

  • May 14, 2021

我想根據磁碟使用情況按降序列出所有文件,並從中獲得以下命令

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

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

但是,它們都只列出目錄。

如何du在其輸出中僅包含正常文件?

獎金:

以下du選項用於什麼(似乎沒有效果)?:

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

如果您有 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

引用自:https://unix.stackexchange.com/questions/649655