Busque una cadena en archivos en el directorio actual, omita duplicados

Busque una cadena en archivos en el directorio actual, omita duplicados

Suponiendo que quiero escribir una línea que imprima líneas que coincidan con una cadena específica sin repetir líneas duplicadas. Quiero buscar esta cadena en los archivos del directorio actual:

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

¿Cómo puedo buscar en todos los archivos de directorio actuales?

Respuesta1

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

O:

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

Con GNU grep:

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

O con zshy GNU grep:

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

Para buscar también archivos en subdirectorios, de forma recursiva:

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

O:

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

Con GNU grep:

grep -hr mystring | LC_ALL=C sort -u

Tenga en cuenta que todas esas soluciones también buscan dentro de archivos ocultos (y archivos dentro de directorios ocultos), pero no en archivos no regulares y no seguirían enlaces simbólicos (a menos que use alguna versión antigua de GNU grepcon -r).

información relacionada