从操作系统和find的Angular 来看,目录的“大小”只是包含该目录的 direct 子目录的所有 * name * 的文本文件的大小。要计算存储所有这些子目录、它们的子目录等所需的大小,操作系统必须递归地迭代所有子目录,并将它们的大小相加。这就是du -s对单个目录所做的。 您可以使用find或其他程序为树中的每个目录执行du(例如as done by Gilles),但这样做速度很慢,并且会反复计算相同大小的子子目录。 如果你需要这个列表只供人类查看,可能有一个更容易、更快、甚至更漂亮的解决方案: tree * 打印文件树,并可以用磁盘大小注解每个条目。
4条答案
按热度按时间wwodge7n1#
作为GNU coreutils 的一部分,使用
du
命令来汇总目录(当前级别)的设备使用情况(空间),并使用阈值参数-t
来排除小于100M
的条目:new9mtju2#
从操作系统和
find
的Angular 来看,目录的“大小”只是包含该目录的 direct 子目录的所有 * name * 的文本文件的大小。要计算存储所有这些子目录、它们的子目录等所需的大小,操作系统必须递归地迭代所有子目录,并将它们的大小相加。这就是du -s
对单个目录所做的。您可以使用
find
或其他程序为树中的每个目录执行du
(例如as done by Gilles),但这样做速度很慢,并且会反复计算相同大小的子子目录。如果你需要这个列表只供人类查看,可能有一个更容易、更快、甚至更漂亮的解决方案:
tree
* 打印文件树,并可以用磁盘大小注解每个条目。tree
的-d
选项只列出目录,而使用grep
,您可以轻松地过滤掉100MB或更大的目录:tree
可能有不同的实现,可能支持也可能不支持这里使用的特性。我只知道一个实现,Steve Baker等人的那个。因此我认为它应该是相当可移植的。8i9zcol23#
假设:
一个
du/awk
的想法,定位目录的大小是100M以上:ykejflvf4#
也许是这个!