![如何统计每个文件夹下的文件中某个单词出现的次数?](https://linux22.com/image/913255/%E5%A6%82%E4%BD%95%E7%BB%9F%E8%AE%A1%E6%AF%8F%E4%B8%AA%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%8B%E7%9A%84%E6%96%87%E4%BB%B6%E4%B8%AD%E6%9F%90%E4%B8%AA%E5%8D%95%E8%AF%8D%E5%87%BA%E7%8E%B0%E7%9A%84%E6%AC%A1%E6%95%B0%EF%BC%9F.png)
我有一个目录,里面有很多子目录,子目录中有文本文件。我需要知道“foo”在每个子目录中出现的次数(但仅限于第一级),而不是所有子目录中存在的单词“foo”的总和。简而言之,我可以通过在每个目录上手动运行来解决这个问题。
grep -riwo 'foo' | wc -l
显然,由于数量太多,这不可行。所以我在包含子目录的目录中尝试了此操作
ls -1 | xargs -L1 grep -riwo 'foo' | wc -l
但这也不起作用,因为从我得到的结果来看,只有在所有文件夹上执行wc
后才能获得输出,将包含所有结果的完整列表传输到仅输出所有目录中出现的“foo”的总和,此时就没有必要了grep
wc
xargs
答案1
由于您只想要每个顶级目录的总数,因此请添加一个简单的循环:
for d in */; do
printf '%s: ' "$d"; grep -riwo 'foo' -- "$d" | wc -l
done