Imprimindo o nome do arquivo e o número da linha de arquivos que correspondem a um padrão

0

Eu preciso procurar o diretório atual e seus subdiretórios para arquivos regulares contendo as palavras: "olá"

Por que isso não funciona para mim:

find . -type f | grep "hello"
    
por darylnak 18.04.2017 / 22:49

3 respostas

0

Você deseja canalizar encontrar em xargs , que lerá corretamente os resultados de find :

find . -type f -print0 | xargs grep "hello"

Veja a página do manual xargs (1) para mais informações.

    
por 18.04.2017 / 22:52
0

Com o comando que você está propondo, você está procurando por qualquer nome de arquivo com a string hello em RATHER que a string hello no conteúdo do arquivo. Use a construção abaixo:

find . -type f -exec grep -n hello /dev/null {} +
    
por 18.04.2017 / 22:57
0

Assim, você pode usar a opção -regex do comando find .

find . -type f -regex ".*/.*hello.*"

.*hello.* - corresponde aos nomes que contenham a palavra "olá". .*/ é necessário porque o comando find retorna o caminho completo.

    
por 19.04.2017 / 01:06

Tags