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 zsh
y 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 grep
con -r
).