Pesquise uma string em arquivos no diretório atual, omita duplicatas

Pesquise uma string em arquivos no diretório atual, omita duplicatas

Supondo que eu queira escrever uma linha que imprima linhas que correspondam a uma string específica sem repetir linhas duplicadas. Quero procurar essa string nos arquivos do diretório atual:

grep mystring ***What to put here?** | sort | uniq

Como posso pesquisar em todos os arquivos dir atuais?

Responder1

find . ! -name . -prune -type f -exec cat {} + |
  grep mystring |
  LC_ALL=C sort -u

Ou:

find . ! -name . -prune -type f -exec cat {} + | awk '
  /mystring/ && !seen[$0]++'

Com GNU grep:

LC_ALL=C grep -hr --exclude-dir='?*' mystring | LC_ALL=C sort -u

Ou com zshe GNU grep:

grep -h mystring ./*(D.) | LC_ALL=C sort -u

Para pesquisar também arquivos em subdiretórios, recursivamente:

find . -type f -exec cat {} + |
  grep mystring |
  LC_ALL=C sort -u

Ou:

find . -type f -exec cat {} + | awk '
  /mystring/ && !seen[$0]++'

Com GNU grep:

grep -hr mystring | LC_ALL=C sort -u

Observe que todas essas soluções também procuram dentro de arquivos ocultos (e arquivos dentro de diretórios ocultos), mas não em arquivos não regulares e não seguiriam links simbólicos (a menos que você use alguma versão antiga do GNU grepcom -r).

informação relacionada