2010-07-13 09:42:08 +0000 2010-07-13 09:42:08 +0000
179
179

Como encontrar ficheiros com determinado texto no Terminal

Gostaria de encontrar todos os ficheiros que contenham uma determinada sequência de texto. Como é que o faria no Terminal?

Respostas (5)

299
299
299
2010-07-13 09:47:11 +0000
grep -r 'text goes here' path_goes_here
31
31
31
2010-08-12 22:38:59 +0000

usar holofotes

mdfind "text goes here"
mdfind -onlyin /home/user/Desktop -live "live update"

não se esqueça de olhar para:

man mdfind
12
12
12
2016-03-03 14:07:18 +0000
  1. Através da Ack
brew install ack 
ack "text goes here"
  1. Através dos find
find . |grep "text goes here"
  1. Através do grep
grep -RnslI "text goes here"
4
4
4
2017-06-01 08:00:18 +0000

Você pode escolher uma das opções abaixo, dependendo do seu gosto e necessidades. Supondo que necessita de procurar ficheiros contendo texto - “async”, recursivamente no directório actual, pode fazê-lo de uma das formas abaixo indicadas:

Using grep

Using ack

2
2
2
2017-06-01 15:27:29 +0000

A resposta do Ignacio é óptima e ajudou-me a encontrar os ficheiros que contêm determinado texto. O único problema que eu estava enfrentando era que ao executar este comando todos os arquivos seriam listados, incluindo um onde o padrão não aparecesse.

No such file or directory Isto é o que eu vejo ao lado de arquivos que não contêm o padrão.

Se em vez disso adicionar -s ao comando, como em:grep -lr "text pattern" ./ -s ; grep -lr "text pattern" [PATH DIRECTORY] -s é usado, só lhe mostrará que ficheiros contêm o padrão.

Da mesma forma se grep -nr "text pattern" ./ -s ; comando grep -nr "text pattern" [PATH OF DIRECTORY] -s é usado, imprime o ficheiro mais o número da linha, e a ocorrência do padrão.

Por favor corrige-me se o meu entendimento estiver errado. Referência: Como é que o grep não imprime erros de “Nenhum ficheiro ou directório deste tipo”?