2012-02-05 40 views
1

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

我知道,我可以使用wc -w获得每个文件的话,但我不能确定如何获得在所有文件中单词的总数,然后通过短信的数量除以文件数

+0

'wc -w * | grep total'会让你开始...不知道该从哪里去。祝你好运! – 2012-02-05 17:23:42

回答

5

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

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

cat *.txt | wc -w 

和文件编号是::您可以通过获得总字数

ls *.txt | wc -l 

然后你可以devide他们。

0

黄的解决方案非常好,但会在任何目录上发出错误。分裂有点痛苦,因为shell中的所有算术都是整数。这里有一个脚本,做你想要什么:

 
#!/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*$//' 

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