我正在尝试运行find
命令来找出特定文本的出现总数,并使用另一个 find 命令来获取包含此文本的文件数。
我现在拥有的是这个命令。
find . -name "*.txt" | xargs grep -i "abc"
这带来了所有具有文本 abc 等的文件。我想获得一个或两个find
命令来获得
- abc 出现的总次数
- 其中包含 abc 的文件总数。
您需要使用更多grep(1)
选项来做您想做的事情:
对于发生的总次数abc
,您需要处理abc
单行上两次或多次的情况:
find . -name '*.txt' -print0 | xargs -0 grep -o -i abc | wc -l
对于包含 的文件总数abc
,您需要注意单个文件包含abc
两次或多次的情况:
find . -name '*.txt' -print0 | xargs -0 grep -l -i abc | wc -l
从grep(1)
手册页:
-l, --files-with-matches
Suppress normal output; instead print the name of each
input file from which output would normally have been
printed. The scanning will stop on the first match.
(-l is specified by POSIX.)
和
-o, --only-matching
Print only the matched (non-empty) parts of a matching
line, with each such part on a separate output line.