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 zsh
e 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 grep
com -r
).