我有一个目录,里面有很多子目录,子目录中有文本文件。我需要知道“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