计算文件中单词列表的出现次数

foo*_*ool 3 shell

我有一个这样的单词列表,用行分隔:

Range
Balance
Total
CombinList
CombinRow
GridKey
KeDanJia
AddRowNum
TopList
Keysearch
Keysearchtaobao
IsearchData
IsearchDataSep
...
Run Code Online (Sandbox Code Playgroud)

我在一个目录下有一些文件:

$ tree
.
|-- a.txt
|-- b.txt
|-- c.txt
|-- d
|   |-- a.txt
|   |-- b.txt
|   |-- c.txt
|   |-- d.txt
|   |-- e.txt
|   |-- f.txt
|   `-- g.txt
Run Code Online (Sandbox Code Playgroud)

如何计算这些文件中单词的出现次数?输出应该是这样的:

Range: 0
Balance: 32
Total: 100
CombinList:4
CombinRow: 3
GridKey: 1
KeDanJia: 43
AddRowNum: 5
TopList: 34
Keysearch: 0
Keysearchtaobao: 1
IsearchData: 12
IsearchDataSep: 123
...
Run Code Online (Sandbox Code Playgroud)

jw0*_*013 5

假设您的单词列表在一个名为的文件中,/path/to/words.txt并且您的树位于/tree本示例中,请尝试:

find /tree -name '*.txt' -execdir sed 's/ /\
/g' {} + | grep -Fw -f /path/to/words.txt | sort | uniq -c | \
awk '{print $2 ": " $1}'
Run Code Online (Sandbox Code Playgroud)