在bash中如何计算多个文件中集合中每个单词的出现次数

时间:2014-05-01 10:15:08

标签: bash

我有一个很大的单词列表(> 1000),它们实际上是文件名和包含大量源代码文件的目录(> 2000)。我希望,对于列表中的每个单词(文件名),计算其在目录的所有文件中的总出现次数。我目前所做的是:

#!/bin/sh
SEARCHPATH=$1
for var in "${@:2}"
do
    BASE=$( basename "$var" )
    COUNT=$(grep -o "$BASE" $SEARCHPATH/* | wc -l)
    echo -e "$BASE:" " $COUNT"
done

哪个有效,但效率低,因为每个单词都会搜索整个目录,而且单词太多了。我正在寻找一个扫描目录一次的解决方案,累积字数。

1 个答案:

答案 0 :(得分:1)

将所有单词放在一个文件中。然后你可以试试这个:

grep -ohFf wordsFile path/* | sort | uniq -c