Abra todos os arquivos que contenham determinado texto

4

Estou procurando um caminho terminal. Abra todos os arquivos em /foo/bar contendo a string foobar . Como?

    
por mreq 07.02.2013 / 17:45

2 respostas

10

Você não disse como deseja abri-los:)

Uma maneira é usar o grep para procurar recursivamente a string em seus arquivos (-r). Use -l para pedir ao grep para gerar apenas os nomes dos arquivos correspondentes. Isso produzirá um nome de arquivo por linha, use xargs para construir uma linha de comando adequada ao seu editor.

grep -r -l foobar /foo/bar/ | xargs vim

isso também funciona com o gedit; apenas mude o vim para o gedit.

Você também pode usar o find para isso, mas é mais complicado IMHO:

find /foo/bar -type -f -exec grep -l foobar {} \;  | xargs vim
    
por roadmr 07.02.2013 / 17:54
1

Abre arquivos contendo foobar um por um em vim :

for f in $(find /foo/bar -type f); do 
    if [ ! -z "$(grep foobar $f)" ]; then
        vim $f 
    fi
done
    
por chronitis 07.02.2013 / 17:54