Listar todos os arquivos regulares contendo (em seu nome, diretório ou seu conteúdo) uma (sub) string específica

1

Como no título, e também quero imprimir o número da linha em cada arquivo (texto) onde a substring ocorre.

Até agora eu tenho:

find /sys | grep "filesystem"

Mas parece apenas olhar para os nomes e diretórios dos arquivos, e não para o conteúdo deles.

E como pesquisar várias strings simultaneamente? Porque eu acho que eu deveria procurar adicionalmente por "*filesystem" , "filesystem*" e "*filesystem*" para incluir todas as ocorrências possíveis da string.

Obrigado antecipadamente.

    
por dziadek1990 12.04.2015 / 18:46

1 resposta

2

Se você não se importa em usar dois comandos diferentes para os nomes e conteúdo dos arquivos, os comandos abaixo irão ajudá-lo.

find /sys -name "*filesystem*"

O comando acima encontrará todos os arquivos / diretórios com "sistema de arquivos" como parte do nome do arquivo / nome do diretor.

grep -rn "filesystem" /sys/*

O comando acima irá procurar todos os arquivos que contenham "filesystem" no conteúdo recursivamente e imprimir o número da linha junto com a linha correspondente. Se quiser imprimir apenas o número da linha sem o conteúdo, você pode usar o filtro abaixo. Você pode substituir 2 pelo número da coluna que deseja imprimir.

grep -rn "filesystem" /sys/* | awk -F":" {'print $2'}
    
por 12.04.2015 / 19:43