Você pode usar uma combinação de tail
e grep
, por exemplo,
find . -type f -exec sh -c 'tail -n1 "" | grep -q "foo"' sh {} \; -print
Posso procurar arquivos com um rexexp que seja comparado com o arquivo inteiro? Digamos que eu tenha esses arquivos:
//file1
foo
bar
//file2
bar
foo
Eu quero encontrar arquivos que terminem com "foo". Se eu usar grep
e o regex foo$
que corresponderá a ambos os arquivos, pois ambos têm linhas que terminam com "foo". Mas eu só quero corresponder ao segundo, já que é o único caso em que o arquivo inteiro termina com "foo".
Você pode usar uma combinação de tail
e grep
, por exemplo,
find . -type f -exec sh -c 'tail -n1 "" | grep -q "foo"' sh {} \; -print
No perl, a opção 0
pode ser usada para processar o arquivo como registro único.
Desta forma, tente:
perl -n0E 'say $ARGV if /foo\s*$/' file*
\s*
é útil para lidar com novas linhas e similares, normalmente presentes no final do arquivo.
Outra alternativa similar (gnugrep)
grep -lzP 'foo\Z' file*