Use tail -n 1
em um loop for
. Por exemplo:
for name in *.file; do
grep -H text "$name" | tail -n 1
done
(A opção -H
fará com que grep
sempre imprima o nome do arquivo, mesmo que apenas um arquivo tenha sido fornecido).
Eu tenho um monte de arquivos, gostaria de encontrar a última correspondência de uma string em cada um deles.
grep text *.file
me fornece todas as correspondências, não as últimas.
ls *.file | xargs grep text | tail -n 1
me fornece a última linha do último arquivo correspondente.
Então, o que eu acho que quero é uma maneira de dizer:
ls *.file | (xargs grep text | tail -n 1)
Mas não sei como fazer isso ou se é possível.
Existe um oneliner sobre um tac
commad, que sai do final até o começo:
find . -name *.log -exec sh -c "tac '{}' | grep -Hm1 text " \;
Tags command-line grep pipe tail unix