Linux平均文件大小,特定文件类型


0

我有一个不同文件的目录。是否可以计算具有特定文件类型的文件的平均大小,在我的情况下是* .txt?我想在当前目录和子文件夹中为所有* .txt执行此操作。


那么你计算每个txt文件的大小(使用ls -ldustat -c %s根据需要输出),你在循环中做数学算术平均值。所以是的,这是可能的。
AB

Answers:


1

您可以使用stat -c%s *filename*获取每个文件的大小,并且ls -l *.txt | wc -lls如果目录中没有* .txt文件,请注意会出错)以获取当前目录中的.txt文件数。

Bash,AFIK,不支持浮点运算,因此您需要使用其他程序来计算平均大小。我建议使用bc

以下脚本将打印当前目录中所有* .txt文件的平均大小

#!/bin/bash

tsize=0
fcount=`ls -l *.txt | wc -l`

for f in *.txt
do
    fsize=`stat -c%s $f`
    tsize=`expr $tsize + $fsize`
done
average=`echo "$tsize / $fcount" | bc -l`
echo "Average size: $average"

请注意,ls如果当前目录中没有.txt文件,则会收到错误消息。


0

使用du可以生成列出的所有文件的总计的命令:

echo $(( $(du -sbc *.txt | tail -1 | cut -f 1) / $(ls *.txt | wc -l) ))

使用-k-m代替-b其他测量单位。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.