【发布时间】:2012-02-05 17:09:52
【问题描述】:
如果我有一个包含文本文件的文件夹,如何使用 Bash 命令获取每个文件的平均字数?
我知道我可以使用 wc -w 来获取每个文件的字数,但我不确定如何获取所有文件的总字数,然后将该数字除以文本文件数
【问题讨论】:
-
wc -w * | grep total将让您开始...不知道从那里去哪里。祝你好运!
如果我有一个包含文本文件的文件夹,如何使用 Bash 命令获取每个文件的平均字数?
我知道我可以使用 wc -w 来获取每个文件的字数,但我不确定如何获取所有文件的总字数,然后将该数字除以文本文件数
【问题讨论】:
wc -w * | grep total 将让您开始...不知道从那里去哪里。祝你好运!
这递归地遍历文件系统并计算所有单词和文件。最后将总字数除以文件数:
find . -type f -exec wc -w {} \; | awk '{numfiles=numfiles+1;total += $1} END{print total/numfiles}'
【讨论】:
您可以通过以下方式获得总字数:
cat *.txt | wc -w
文件编号:
ls *.txt | wc -l
然后你可以划分它们。
【讨论】:
这只是一个建议。您可以使用Loops 和Variable Assignment。
【讨论】:
黄的解决方案非常好,但会在任何目录上发出错误。除法有点麻烦,因为 shell 中的所有算术都是整数。这是一个执行您想要的脚本:
#!/bin/sh 对于 * 中的文件;做 测试 -f "$file" ||继续 c=$( wc -w "$file" | awk '{print $1}' ) : $(( 总计 += $c )) : $(( 计数 += 1 )) 完毕 echo $total $count 10k / p |直流| sed 's/0*$//'但 bunting 的 awk 解决方案是可行的方法。
【讨论】: