O grep tem o modo de regexp do Perl (-P) e apenas a contagem (-c)
$ grep -c -P 'ABCD\ \t\ ,EFGH,\ ,' file
1
Existem mais de 200 arquivos em uma pasta em que alguns dos arquivos consistem no seguinte padrão em seus registros
ABCD<Space><tab><Space>,EFGH,<SPACE>,
.
Sem alterar ou substituir, só quero saber o número de arquivos com esse formato.
O grep tem o modo de regexp do Perl (-P) e apenas a contagem (-c)
$ grep -c -P 'ABCD\ \t\ ,EFGH,\ ,' file
1
Tente isto para obter o número de arquivos que tem o padrão
grep -rlP "ABCD \t ,EFGH, " directory | wc -l
r
P
modo Perl l
imprime o nome de cada arquivo de entrada do qual a saída normalmente teria sido impressa. A digitalização será interrompida na primeira correspondência. Para obter a lista de arquivos:
grep -rlP "ABCD \t ,EFGH, " directory | awk -F '/' '{print $2}'
Este comando conta o número de arquivos no diretório atual que contêm correspondências ao seu padrão:
grep -Psl 'ABCD \t ,EFGH, ,' * | wc -l
(Em comum com a maioria das outras soluções, ele irá enganar arquivos que contenham novas linhas embutidas em seu nome. Em um mundo GNU você pode usar grep -PZsl '...pattern...' * | tr '\n%code%' 'X\n' | wc -l
para consertar isso.)
com zsh
(cd folder && grep -l $' \t ' ./*(D.)) | grep -c /
Contará o número de arquivos regulares no diretório folder
que contém pelo menos uma ocorrência de <space><tab><space>
.
Recursivamente:
(cd folder && grep -l $' \t ' .//**/*(D.)) | grep -c //
Recursivamente, você também pode usar find
:
(cd folder && find .//. -type f -exec grep -l $' \t ' {} +) | grep -c //
Se você quiser considerar apenas os arquivos em que <space><tab><space>
é encontrado na primeira coluna, altere o padrão para $'^[^,]* \t '
.
Tags grep regular-expression