Unix找到平均文件大小

时间:2012-02-08 14:44:03

标签: unix size

我有一个包含大量文件的目录,我想找到这些文件的平均文件大小,所以类似于ls 某些内容是什么东西的平均文件大小是什么?

7 个答案:

答案 0 :(得分:35)

我在这里找到了一些东西:
http://vivekjain10.blogspot.com/2008/02/average-file-size-within-directory.html

要计算Linux系统上目录中的平均文件大小,可以使用以下命令:

ls -l | gawk '{sum += $5; n++;} END {print sum/n;}'

答案 1 :(得分:21)

Ernstsson答案的简短,一般和递归友好的变体:

find ./ -ls | awk '{sum += $7; n++;} END {print sum/n;}'

或者,例如,如果您想阻止100 KB以上的文件炖平均值:

find ./ -size -100000c -ls | awk '{sum += $7; n++;} END {print sum/n;}'

答案 2 :(得分:4)

使用wc -c *获取所有文件的大小,使用ls | wc -l获取文件数。然后将它们分开。

答案 3 :(得分:2)

du -sh。 #给出目录

使用的总空间 找到。 -type f | wc -l#计算文件数

将第一个排在第二位。 如果你想要一个班轮,这里是:

echo $(( `du -sb | tr '.' ' '` / `find . -type f | wc -l` ))

答案 4 :(得分:1)

他们正在查找目录的大小并查找计算机上存在的可用磁盘空间量。用于查找目录大小的命令是' du'。并找到你可以使用的可用磁盘空间' df'。

本文中提供的所有信息均可在du和df的手册页中找到。如果您厌倦阅读手册页并希望快速完成工作,那么本文适合您。

-

'杜' - 查找目录的大小

$ du

在提示符下键入上面的内容会为您提供当前目录中存在的目录及其大小。输出的最后一行为您提供当前目录的总大小,包括其子目录。给定的大小包括文件的大小和当前目录中存在的目录及其所有子目录。请注意,默认情况下,给定的大小以千字节为单位。

**$ du /home/david**

上面的命令将为您提供目录/ home / david

的目录大小
**$ du -h**

此命令为您提供比默认输出更好的输出。选项' -h'代表人类可读的格式。所以文件/目录的大小这个时间后缀为' k'如果它的千字节和' M'如果它的兆字节和' G'如果是千兆字节。

**$ du -ah**

此命令将在其输出中显示,不仅包括目录,还包括当前目录中存在的所有文件。请注意' du'始终计算所有文件和目录,同时在最后一行给出最终大小。但是' -a'显示文件名以及输出中的目录名称。 ' -h'是人类可读的格式。

**$ du -c**

这为您提供了总计作为输出的最后一行。因此,如果您的目录占用30MB,则输出的最后两行将是

30M。 总计30M

第一行是' du'的默认最后一行。输出指示目录的总大小,另一行显示相同的大小,后跟字符串" total'。如果您将此命令与grep命令一起显示目录的最终总大小,这将非常有用。如下所示。

**$ du -ch | grep total**

在输出中只有一行显示当前目录的总大小,包括所有子目录。

注意:如果您不熟悉管道(使上述命令成为可能),请参阅第24条。 grep也是Unix中最重要的命令之一。有关grep的更多信息,请参阅第25条。

**$ du -s**

显示目录大小的摘要。这是了解当前目录总大小的最简单方法。

**$ du -S**

这将显示当前目录的大小,不包括该目录中存在的子目录的大小。所以它基本上显示了当前目录中存在的所有文件的总大小。

**$ du --exculde=mp3**

上面的命令会显示当前目录的大小及其所有子目录,但它会排除文件名中存在给定模式的所有文件。因此,在上述情况下,如果当前目录或其任何子目录中碰巧有任何mp3文件,则在计算总目录大小时不会包括它们的大小。

  • ' DF' - 查找磁盘可用空间/磁盘使用情况

    $ df

输入上述内容,输出一个由6列组成的表。所有列都很容易理解。请记住,'尺寸','使用'和' Avail'列使用千字节作为单位。 '使用%'列显示使用百分比,这也非常有用。

**$ df -h**

显示与上一个命令相同的输出,但是' -h'表示人类可读的格式。因此,不是千字节作为单位,输出将具有' M'对于兆字节和' G'为技嘉。

大多数用户都没有使用可以传递给其他参数的其他参数' df'。所以我不会讨论它们。

我将依次向您展示我在机器上使用的示例。我实际上已将其存储为名为' usage'因为我经常使用它。

示例:

我在/ dev / hda1上安装了Linux,并且我也安装了Windows分区(默认情况下每次Linux启动时)。所以' df'默认显示我的Linux以及Windows分区的磁盘使用情况。我只对Linux分区的磁盘使用感兴趣。这就是我使用的:

**$ df -h | grep /dev/hda1 | cut -c 41-43**

此命令在我的机器上显示以下内容

45%

基本上这个命令使得' df'显示所有分区的磁盘使用情况,然后使用/ dev / hda1提取行,因为我只对此感兴趣。然后它会从第41列到第43列剪切字符,因为它们是以%显示使用情况的列,这就是我想要的。

还有一些选项可用于' du'和' df' 。您可以在手册页中找到它们。

答案 5 :(得分:1)

即使在AIX上,它也可移植。 输出指定目录(以下示例中的${directory})中普通文件的平均字节数:

find "${directory}" '!' -path "${directory}" -prune -type f -ls | awk '{s+=$7} END {printf "%.0f\n", s/NR}'

无需自己计算文件数量。 NR是awk内置的行数。

'!' -path ${directory} -prune部分是一种可移植的方法,它可以通过修剪与我们开始的路径不同的任何路径来实现与GNU find -maxdepth 1等效的功能,从而忽略任何子目录。

根据要计数的文件进行调整。例如,要平均当前目录中*.sh以外的所有文件,您可以添加'!' -name '*.sh'

find . '!' -path . -prune -type f '!' -name '*.sh' -ls | awk '{s+=$7} END {printf "%.0f\n", s/NR}'

或仅计算*.mp3并包括所有子目录(删除'!' -path . -prune):

find . -type f -name '*.mp3' -ls | awk '{s+=$7} END {printf "%.0f\n", s/NR}'

答案 6 :(得分:0)

使用du 估计给定目录的文件空间使用

du -sh /Your/Path # Average file size in human readable format
  

-s (--summarize)仅显示每个参数的总数。

     

-h (--human-readable)以人类可读的格式打印大小(例如 1K 234M 2G )。

请注意,不使用-h将提供默认的块大小( 512字节块)。

如果您希望指定块大小 ,则可以使用-k (千字节)-m < em>(兆字节),或-g (千兆字节)

du -sk /Your/Path # Average file size in Kilobytes.

脚注:使用文件路径将给出指定文件的大小。