从您的文件夹:
find . -maxdepth 1 -type f -exec du -h {} + | sort --human-numeric-sort --reverse
Run Code Online (Sandbox Code Playgroud)
您可以设置-maxdepth递归查找带参数或不带参数的文件的深度。
如果您想递归地列出目录中的所有内容,请使用find或:dusort
find /some/path -type f -printf '%s %p\n' | sort -rn
du -h /some/path | sort -rh
Run Code Online (Sandbox Code Playgroud)
前者仅显示文件和大小(以字节为单位)。后者将以人类可读的(使用 KB、MB 等)格式显示文件和累积目录大小。sort因此,前者使用数字 ( -n) ,后者使用人类可读的 ( -h) 。
随着复杂性的增加,最好的选择是:
find /some/path -type f -print0 | du --files0-from=- -0h | sort -rzh | tr '\0' '\n'
Run Code Online (Sandbox Code Playgroud)
du可以从输入中读取以 NUL 分隔的文件列表,并find可以使用 打印以 NUL 分隔的文件名-print0。sort然后可以获取以 NUL 分隔的大小和文件名列表并对它们进行排序,最后用换行符替换 NUL 以方便显示。
由于文件名和路径可以包含除 ASCII NUL 字符之外的任何内容,因此使用 NUL 分隔的行来处理它们是最安全的方法。
您还可以find打印第一个命令中看到的大小,但-printf '%s %p\0'仍然使用 NUL 分隔行,并跳过使用du作为中间人。