![Grep:计算所有递归文件中与文件名匹配的特定字符串](https://linux22.com/image/1474738/Grep%EF%BC%9A%E8%AE%A1%E7%AE%97%E6%89%80%E6%9C%89%E9%80%92%E5%BD%92%E6%96%87%E4%BB%B6%E4%B8%AD%E4%B8%8E%E6%96%87%E4%BB%B6%E5%90%8D%E5%8C%B9%E9%85%8D%E7%9A%84%E7%89%B9%E5%AE%9A%E5%AD%97%E7%AC%A6%E4%B8%B2.png)
我已经可以计算目录中所有文件中的字符串数量:
grep -roh „XXX" . | wc –w
但我不知道如何隔离该语句。我只想统计文件名中包含以下字符串“2015-09-25”的文件中的单词。
有人能帮我吗?
答案1
这应该可以工作,它用于find
隔离您感兴趣的文件,然后仅在这些文件上运行 grep:
find /mydir -maxdepth 1 -type f -name "*2015-09-25*" -execdir grep -roh "XXX" "{}" \+ | wc -w
如果你还想在 /mydir 的子目录中查找文件,只需删除-maxdepth 1
答案2
如果所有文件都在当前目录中,尝试
grep -oh "XXX" *2015-09-25*
否则尝试
grep -roh -c --include="*2015-09-25*" "XXX"
在哪里
-r
告诉 grep 进行递归--include="*2015-09-25*"
根据文件的基本名称进行过滤。