Estou tentando encontrar uma maneira de verificar todo o meu sistema Linux em busca de todos os arquivos que contêm uma sequência específica de texto. Só para esclarecer, estou procurando texto dentro do arquivo, não no nome do arquivo.
Quando eu estava pesquisando sobre como fazer isso, me deparei com essa solução duas vezes:
find / -type f -exec grep -H 'text-to-find-here' {} \;
No entanto, isso não funciona. Parece exibir todos os arquivos do sistema.
Isso está próximo da maneira correta de fazer isso? Se não, como devo? Essa capacidade de encontrar seqüências de texto em arquivos seria extraordinariamente útil para alguns projetos de programação que estou realizando.
-H
por -l
(e talvez grep
por fgrep
). Para excluir arquivos com certos padrões de nomes, você usaria find
de uma maneira mais avançada. Vale a pena aprender a usar find
, no entanto. Apenas man find
.
find … -exec <cmd> +
é mais fácil de digitar e mais rápido que find … -exec <cmd> \;
. Funciona apenas se <cmd>
aceitar qualquer número de argumentos de nome de arquivo. A economia no tempo de execução é especialmente grande se <cmd>
for lenta para iniciar como scripts Python ou Ruby.
grep "pattern" path/*.txt
.
um como curinga de um caractere, entre outros. Meu conselho é sempre usar o fgrep ou o egrep.