如何使用grep计算目录的所有文件中所有单词的出现次数?但是每个文件每个单词的计数只增加一次

Cnv*_*rsn 5 grep bash directory files

我已经问过一个类似的问题,但人们误解了我在问什么。我在问如何生成每个单词的列表,每个文件的单词计数仅增加一次。

例如,我有一个包含 10 个文件的目录,我想使用 bash 命令生成一个单词列表,该列表表示 1-10 的值,具体取决于它们出现在多少个文件中:

10 The
10 and
8 bash
7 command
6 help....
Run Code Online (Sandbox Code Playgroud)

等等。

我已经知道grep -l word *| wc -l会搜索一个单词,但我想创建一个所有单词的列表。

有没有办法将其与tr '[A-Z]' '[a-z]' | tr -d '[:punct:]'大写字母相结合,以便不重复大写字母并删除标点符号?

Meh*_*met -1

这应该从所有文件中获取所有单词,对它们进行排序并获取唯一的单词,然后迭代这些单词并计算它出现在多少个文件中。

# find all words from all files within the directory
grep -o -h -E '\w+' directory/*|sort -u | \
while read word;
do
        # iterate through each word and find how many files it occurs
        c=`grep -l "$word" directory/*|wc -l`
        echo "$c $word";
done
Run Code Online (Sandbox Code Playgroud)