获取每个文件的平均单词

时间:2012-02-05 17:09:52

标签: linux bash terminal

如果我有一个文本文件夹,如何使用Bash命令获取每个文件的平均单词?

我知道我可以使用wc -w来获取每个文件的单词,但我不确定如何获取所有文件中的单词总数,然后将该数字除以文本文件的数量< / p>

4 个答案:

答案 0 :(得分:5)

这会递归遍历文件系统并计算所有单词和文件。最后,它将总字数除以文件数:

find . -type f -exec wc -w {} \; | awk '{numfiles=numfiles+1;total += $1} END{print total/numfiles}'

答案 1 :(得分:1)

您可以通过以下方式获得总字数:

cat *.txt | wc -w

和文件编号:

ls *.txt | wc -l

然后你可以将它们分开。

答案 2 :(得分:0)

这只是一条建议。您可以使用LoopsVariable Assignment

答案 3 :(得分:0)

Huang的解决方案非常好,但会在任何目录上发出错误。除非是整数,否则除法有点痛苦。这是一个完成你想要的脚本:

#!/bin/sh

for file in *; do
    test -f "$file" || continue
    c=$( wc -w "$file" | awk '{print $1}' )
    : $(( total += $c ))
    : $(( count += 1 ))
done

echo $total $count 10k / p | dc | sed 's/0*$//'

但是Bunting的awk解决方案是要走的路。