Unix找到平均文件大小

问题描述 投票:20回答:7

我有一个目录,有大量的文件,我想找到这些文件的平均文件大小,所以像某些东西,什么是什么,一切的平均文件大小满足?

unix size
7个回答
35
投票

我发现了一些东西: http://vivekjain10.blogspot.com/2008/02/average-file-size-within-directory.html

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

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

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;}'

4
投票

使用wc -c *获取所有文件的大小,使用ls | wc -l获取文件数。然后只是分开一个。


2
投票

杜什。 #给出目录使用的总空间

找 。 -type f | wc -l#计算文件数

将第一个除以第二个。如果你想要一个衬垫,这里是:

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

1
投票

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

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

-

'du' - 查找目录的大小

$ 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列组成的表。所有列都很容易理解。请记住,“大小”,“已使用”和“可用”列使用千字节作为单位。 “使用%”列以百分比形式显示使用情况,这也非常有用。

**$ 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'一起使用的选项。您可以在手册页中找到它们。


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}'

0
投票

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

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

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

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

请注意,不使用-h会给出默认的块大小(512字节块)。

如果您想指定块大小,可以使用-k(Kilobytes),-m(兆字节)或-g(千兆字节)。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.