Em primeiro lugar, como outros já disseram, não há razão para usar find
, apenas use% recursivagrep
:
grep -irm 1 carrot . | wc -l
O -m 1
garante que grep
pare de pesquisar cada arquivo após a primeira correspondência. Sem isso, você não está contando o número de arquivos que contêm carrot
, mas o número de linhas , o mesmo arquivo será contado várias vezes se contiver várias instâncias de %código%. De carrot
:
-r, --recursive
Read all files under each directory, recursively, following
symbolic links only if they are on the command line. This is
equivalent to the -d recurse option.
-i, --ignore-case
Ignore case distinctions in both the PATTERN and the input
files. (-i is specified by POSIX.)
-m NUM, --max-count=NUM
Stop reading a file after NUM matching lines.
Se você realmente quer fazer isso com o find, você pode fazer
find . -type f -exec grep -im 1 carrot {} \; | wc -l
Observe que estou especificando man grep
, já que você não deseja -type f
de diretórios.