1

我正在尝试运行find命令来找出特定文本的出现总数,并使用另一个 find 命令来获取包含此文本的文件数。

我现在拥有的是这个命令。

find . -name "*.txt" | xargs grep -i "abc"

这带来了所有具有文本 abc 等的文件。我想获得一个或两个find命令来获得

  1. abc 出现的总次数
  2. 其中包含 abc 的文件总数。
4

1 回答 1

2

您需要使用更多grep(1)选项来做您想做的事情:

  1. 对于发生的总次数abc,您需要处理abc单行上两次或多次的情况:

    find . -name '*.txt' -print0 | xargs -0 grep -o -i abc | wc -l
    
  2. 对于包含 的文件总数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.
于 2012-05-04T03:10:24.353 回答