BASH 统计所有行的数字
BASH counting numbers on all lines
我的 bash 脚本需要帮助。
任务正在计算目录中文件的总大小。我已经做到了(使用 ls、awk 和 grep)。例如,我的输出可能如下所示:
1326
40
598
258
12
$
这些数字表示目录中文件的大小。
我需要数一数它们,我就卡在这里了。
因此,如果有人能告诉我如何计算所有文件(并找到目录中文件的总大小),我将不胜感激
谢谢
awk
救援!
awk '+0=={sum+=; count++} END{print sum, count}'
将所有数字相加并计算(数字为 1+0==$1,但字符串不为 1)并打印总和并在完成后计数。
嗯,在 Unix shell 编程中,永远不要忘记最基本的哲学,即:
法语的意思是 使用正确的工具做一件事,但做得很好。您可以通过混合 ls
或 find
、grep
、awk
、cut
和 sed
来实现您想要的效果] 和...,或者您可以使用专为计算文件大小而设计的工具。
那个工具是 du
:
% du -chs /directory
4.3G /directory
4.3G total
不过,它会给出给定路径的每个目录中每个文件的总 大小。如果你想将它限制为目录中的文件(而不是下面的文件),你可以这样做:
% du -chsS /directory
3G /directory
3G total
有关详细信息,请参阅手册页 [man du
],以下是我在答案中使用的参数:
-c, --total produce a grand total
-h, --human-readable print sizes in human readable format (e.g., 1K 234M 2G)
-s, --summarize display only a total for each argument
如果您删除 -s
,您将获得目录中每个文件的大小详细信息,如果您删除 -h
,您将获得以字节为单位的完整大小(而不是四舍五入为更多可读形式),如果你删除 -c
你将不会有总计(即末尾的 total
行)。
HTH
我的 bash 脚本需要帮助。
任务正在计算目录中文件的总大小。我已经做到了(使用 ls、awk 和 grep)。例如,我的输出可能如下所示:
1326
40
598
258
12
$
这些数字表示目录中文件的大小。 我需要数一数它们,我就卡在这里了。 因此,如果有人能告诉我如何计算所有文件(并找到目录中文件的总大小),我将不胜感激
谢谢
awk
救援!
awk '+0=={sum+=; count++} END{print sum, count}'
将所有数字相加并计算(数字为 1+0==$1,但字符串不为 1)并打印总和并在完成后计数。
嗯,在 Unix shell 编程中,永远不要忘记最基本的哲学,即:
法语的意思是 使用正确的工具做一件事,但做得很好。您可以通过混合 ls
或 find
、grep
、awk
、cut
和 sed
来实现您想要的效果] 和...,或者您可以使用专为计算文件大小而设计的工具。
那个工具是 du
:
% du -chs /directory
4.3G /directory
4.3G total
不过,它会给出给定路径的每个目录中每个文件的总 大小。如果你想将它限制为目录中的文件(而不是下面的文件),你可以这样做:
% du -chsS /directory
3G /directory
3G total
有关详细信息,请参阅手册页 [man du
],以下是我在答案中使用的参数:
-c, --total produce a grand total
-h, --human-readable print sizes in human readable format (e.g., 1K 234M 2G)
-s, --summarize display only a total for each argument
如果您删除 -s
,您将获得目录中每个文件的大小详细信息,如果您删除 -h
,您将获得以字节为单位的完整大小(而不是四舍五入为更多可读形式),如果你删除 -c
你将不会有总计(即末尾的 total
行)。
HTH