如果我有一个文本文件夹,如何使用Bash命令获取每个文件的平均单词?
我知道我可以使用wc -w
来获取每个文件的单词,但我不确定如何获取所有文件中的单词总数,然后将该数字除以文本文件的数量< / p>
答案 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)
这只是一条建议。您可以使用Loops和Variable 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解决方案是要走的路。