如何统计每个文件夹下的文件中某个单词出现的次数?

如何统计每个文件夹下的文件中某个单词出现的次数?

我有一个目录,里面有很多子目录,子目录中有文本文件。我需要知道“foo”在每个子目录中出现的次数(但仅限于第一级),而不是所有子目录中存在的单词“foo”的总和。简而言之,我可以通过在每个目录上手动运行来解决这个问题。

grep -riwo 'foo' | wc -l 

显然,由于数量太多,这不可行。所以我在包含子目录的目录中尝试了此操作

ls -1 | xargs -L1 grep -riwo 'foo' | wc -l

但这也不起作用,因为从我得到的结果来看,只有在所有文件夹上执行wc后才能获得输出,将包含所有结果的完整列表传输到仅输出所有目录中出现的“foo”的总和,此时就没有必要了grepwcxargs

答案1

由于您只想要每个顶级目录的总数,因此请添加一个简单的循环:

for d in */; do 
  printf '%s: ' "$d"; grep -riwo 'foo' -- "$d" | wc -l
done

相关内容