Unix 目录的平均和最大大小

Unix 目录的平均和最大大小,unix,shell,directory,size,Unix,Shell,Directory,Size,我有一个目录和一堆子目录,如下所示: -目录1(分目录1、分目录2、分目录3、分目录4、分目录5…………等等,数以百计……) 如何找出子目录的平均大小? 我如何找到子目录的最大大小 全部使用Unix命令 谢谢。我曾经对ext3有过一个问题,它只允许每个目录有31998个子目录。Ext4允许64k。如果在目录1中只有目录而没有文件,那么下面两个“命令”应该分别给出最大目录的大小(以字节为单位)和名称以及它们的平均大小(以字节为单位) $ du -sb directory1/* | sort -n

我有一个目录和一堆子目录,如下所示: -目录1(分目录1、分目录2、分目录3、分目录4、分目录5…………等等,数以百计……)

如何找出子目录的平均大小? 我如何找到子目录的最大大小

全部使用Unix命令


谢谢。

我曾经对ext3有过一个问题,它只允许每个目录有31998个子目录。Ext4允许64k。

如果在
目录1
中只有目录而没有文件,那么下面两个“命令”应该分别给出最大目录的大小(以字节为单位)和名称以及它们的平均大小(以字节为单位)

$ du -sb directory1/* | sort -n | tail -n 1
$ du -sb directory1/* | awk ' { sum+=$1; ++n } END { print sum/n } '
如果
directory1
中也有普通文件,这些文件也将与上述示例一起计算。如果普通文件不应计算在内,则以下内容可能更合适

$ find directory1/ -mindepth 1 -maxdepth 1 -type d -exec du -sb {} \; | sort -n | tail -n 1
$ find directory1/ -mindepth 1 -maxdepth 1 -type d -exec du -sb {} \; | awk ' { sum+=$1; ++n } END { print sum/n } '
要获得最大大小(KB),请使用-b表示字节

du -sk */|sort -n|tail -1
获取平均大小(KB)


子目录的最大大小是什么意思?您是指最大子目录的大小吗?使用Unix命令意味着这与编程无关。投票迁移到超级用户。迁移到超级用户是可以的。我在一个目录下的子目录不超过1000个,所以这不是问题。第二个命令是否给出了以KB为单位的平均大小?(我理解的第一个是以字节为单位的,对)@Mircea所有大小都以字节为单位,这就是
-b
标志对
du
的作用。如果您希望大小以KiB表示,请将
-b
替换为
-k
。对于第一个命令(与-b一起使用),我得到的最大大小为9893072,我猜是9893千字节,而不是千位,对吗。如果我用-k运行它,我得到992(千字节还是千位?),哪一个是正确的?当我使用-b运行第二个命令时,它给了我960(平均值)。960字节??这是不可能的,我知道里面所有的子目录都有超过960个字节。我怎么才能排除某些子目录被计数呢?@Mircea我犯了一个小错误
sort
应该添加
-n
(正如我现在在上面的回答中所做的那样),以使其按数字排序,而不是按字典排序。另外,请注意,
-k
以KiB而不是kB表示大小。一个KiB是1024字节,一个kB是1000字节。awk不是有点违背了只使用unix命令的目的吗?我的意思是,当然是一个,但是perli也一样,我不明白你在说什么。任何可以在命令行上执行的工具/程序在技术上都是“unix命令”。然而,在传统意义上,在出现Perl/Python等语言之前,这些命令(例如du/awk等)已经是unix的一部分。直到今天,我仍然将它们区分为unix命令(如在单个unix规范中的命令),而不是将Perl/Python称为“unix命令”,但awk是一种编程语言。图灵完成了,是吗?我还是不明白你的意思。awk是一种编程语言,但它没有用于查找磁盘使用情况的库/模块(也称为du)。
du -sk */|awk '{s+=$1}END{print s/NR}'