我有一个很大的单词列表(> 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
哪个有效,但效率低,因为每个单词都会搜索整个目录,而且单词太多了。我正在寻找一个扫描目录一次的解决方案,累积字数。
答案 0 :(得分:1)
将所有单词放在一个文件中。然后你可以试试这个:
grep -ohFf wordsFile path/* | sort | uniq -c